Re: [请益] 所以,到底什么是RESTful API?

楼主: brucetu (sec)   2019-03-12 15:56:24
没想到RESTful吸引这么多人讨论
看来RESTful真的是一个概念各种表述
小弟刚接触RESTful的时候
曾经很热血的把一百多支API从只有post/get改成RESTful
改完之后有些人觉得好 有些人觉得无所谓
也有人觉得一律POST 这样client实作最方便 只要能用就好
后来我遇到一个例子
要提供API搜寻文章历史纪录 可选的输入字段有N种
url可能长这样
ooxx.com/posts/query?writerNameKeyword=..&minRate=..&maxRate=..
假设还有浏览数/发文日期/国家杂七杂八的可选输入字段
因为是可选所以也不适合用posts/{country}/query?
日期 浏览数这类的字段看起来也是放在querystring比较好
最后整个url就超级长
虽然SPA设计不会让这串url出现在浏览器网址
但是看到这串这么长还是会觉得很怪
这时候就很想用POST把参数都放body 小组讨论后也觉得这样比较好
各位觉得呢?
后来其他系统我也不再坚持query一定要用GET了
顺带一提 最近发现虾皮购物前端呼叫的api也改成不是restful了..
v2版本的下架商品是PUT , 把整个商品资料json带入 status改成8
删除商品是 DELETE products/{id}
v3版本entry变成 update_product 跟 delete_product
verb都是POST
以前在开发也经常为了RESTful命名花很多时间
甚至还要跟小组讨论 或是有人写出不是RESTful的时候还要重写
最后APP开发者串接还是要看文件才行
只是看到RESTful的接口可能觉得很干净 用起来有一种爽度
但是文件不说明你还是不会知道这支API所有的细节
反应到开发成本上 坚持完全RESTful的设计 我是没有感觉到优势
作者: moom50302 (武林三羚鳄)   2019-03-12 16:22:00
每个人都要有概念,Restful才有优势,不然光是理解就花更多时间了
作者: dreamnook (亚龙)   2019-03-12 16:29:00
学习过程中我对restful最大误解是要抛弃querystring但实际上没有要求抛弃的样子 忘了从哪传来的
作者: othree (OOO)   2019-03-12 17:32:00
因为没 querystring 最漂亮吧,其实这些问题也是现在GraphQL 的由来
作者: blues520520 (blues520520)   2019-03-12 19:10:00
查到有要符合HATEOAS 才可以叫RESTful?
作者: tz5514 (屁安)   2019-03-12 20:21:00
query string用在optional parameters 但是还是解决不了字段大量排列组合的问题 所以才需要GraphQL
作者: y3k (激流を制するは静水)   2019-03-12 21:28:00
初学者都会认为直接POST最快最稳 但是有一些隐性的问题跟劣势写久还是把Http Method跟Code搬出来比较严谨
作者: srwhite (鲁蛇阿白)   2019-03-13 13:43:00
我也有这问题 查询条件多的时候大家都怎么弄
作者: pttuser2266   2019-03-14 09:53:00
Post 不能 cache by url , 用 Get + query string比较好
楼主: brucetu (sec)   2019-03-14 23:08:00
曾经开发的APP都会被测试PO文另一支手机重整马上看到如果cache导致没有收到新资料 老板不接受
作者: benjamin99 (BigPaPa)   2019-03-16 22:15:00
回楼上,那你可能要问你老板愿意为这个零时差的即时性付出多少钱吧

Links booklink

Contact Us: admin [ a t ] ucptt.com