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