前端三十|26. [BE] API 設計拿資料要透過 POST,會有什麼問題嗎?

Schaos
Schaos’s Blog
Published in
8 min readOct 12, 2019

--

現代的網站越來越多前後端分離的架構,透過 前端 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,讓不同的操作結果得以被預期。

GETPOST 相信絕大多數的開發者都不陌生,這是 HTML 的 <form action="..."> 唯二支援的 Methods;GET 是最頻繁使用的,無論是取得頁面、資料,一般而言都會使用GETPOST 則常用在新增資源,但由於前述的 HTML <form action="..."> 不支援其他 Methods,在傳統網站中可能會用 POST 處裡除了取得資料以外的所有事情。

關於為什麼 HTML 不支援其他 HTTP Methods,可以參考 這則問答,及 這則 Issue 討論

PUTPATCH 通常都用在更新資源,兩者的差異是 PUT 預期的行為會是取代整個資源,而 PATCH 則是更新部分資源;把兩者對應到生活化案例的話,例如在餐廳吃飯,整桌重新點菜是 PUT,另外加點則會是 PATCH

DELETE 通常用在刪除資源;HEADGET 同樣為取回資源,但只取回 Header,通常會用在測試資源是否存在;OPTION 是詢問這個資源應該要怎麼獲取,常在 發送 CORS

--

--