前端三十|26. [BE] API 設計拿資料要透過 POST,會有什麼問題嗎?
現代的網站越來越多前後端分離的架構,透過 前端 MVC 框架 快速堆砌出 SPA,再透過 API 取得變動的資料也已經是開發者日常;而用來聯繫前後端的 API,其重要性自然也就不言而喻了。身為一個前端開發者,認識後端的 API 設計方式也是很重要的一環,今天就讓我們針對 API 設計來一探究竟吧!
本系列文已經重新編校彙整編輯成冊,並正式出版囉!
《前端三十:從 HTML 到瀏覽器渲染的前端開發者必備心法》好評販售中!
喜歡我文章內容的讀者們,歡迎您前往購買支持!
HTTP Method
畢竟是網站的前後端,其中間的通訊,終究還是要仰賴 HTTP 這個無狀態的協定;在 HTTP 規範中 有定義了一系列的 Request Method,其中較常用到的如下:
- GET:取得資源
- HEAD:與
GET
同為取得資源,但只取回 Header - POST:提交資源
- PUT:取代指定資源
- PATCH:修改指定資源
- DELETE:刪除指定資源
- OPTION:詢問與指定資源的溝通方法
在規範中也提到,不同的 Method 指的是對同一件事情做不同的操作,並透過語意化的(semantic)Methods,讓不同的操作結果得以被預期。
GET
、POST
相信絕大多數的開發者都不陌生,這是 HTML 的 <form action="...">
唯二支援的 Methods;GET
是最頻繁使用的,無論是取得頁面、資料,一般而言都會使用GET
,POST
則常用在新增資源,但由於前述的 HTML <form action="...">
不支援其他 Methods,在傳統網站中可能會用 POST
處裡除了取得資料以外的所有事情。
關於為什麼 HTML 不支援其他 HTTP Methods,可以參考 這則問答,及 這則 Issue 討論。
PUT
和 PATCH
通常都用在更新資源,兩者的差異是 PUT
預期的行為會是取代整個資源,而 PATCH
則是更新部分資源;把兩者對應到生活化案例的話,例如在餐廳吃飯,整桌重新點菜是 PUT
,另外加點則會是 PATCH
。
DELETE
通常用在刪除資源;HEAD
與 GET
同樣為取回資源,但只取回 Header,通常會用在測試資源是否存在;OPTION
是詢問這個資源應該要怎麼獲取,常在 發送 CORS…