📄 HTTP Methods
1. What is the RESTful API ?
撰寫 RESTful API 採用一套標準化的設計風格,便於網路上不同系統之間的進行通訊,為了遵循 REST 原則,API 應該要是可預測且容易理解。而身為前端開發者,較為側重關注以下三點:
- URL 路徑(url path):確認 client 端請求的範圍,例如:
/products: 可能返回產品列表/products/abc:提供產品 ID 為 abc 的產品細節
- HTTP 方法:定義具體的執行方式:
GET:用於取得資料POST:用於創建新資料PUT: 用於更新現有資料DELETE:用於刪除資料
- 狀態碼(status code):提供了關於請求是否成功,以及如果不成功,問題可能出在哪裡的快速指示。常見狀態碼包括:
200:成功404:找不到請求的資源500:伺服器錯誤
2. If GET can also carry data in a request, why should we use POST?
既然
GET也能傳送包含資料的請求,為什麼我們還需要使用POST呢?
主要基於這四點考量:
- 安全性:因為
GET的資料是附加在 URL 上面,自然也就容易曝露敏感資料,而POST則是將資料放在請求的body中,相對更為安全。 - 資料大小限制:使用
GET由於瀏覽器和服務器對 URL 長度有限制(雖然每個瀏覽器略有不同,但大體落在 2048 bytes 上下浮動),因此資料量會受到限制。POST雖然名義上沒有限制,但實務上為了避免被惡意攻擊灌入大量資料,通常還是會透過一些中間件的設置來限制資料大小。譬如express的body-parser。 - 語意清晰:確保開發者能夠清楚的知道這個請求的目的,
GET通常用於獲取資料,而POST則更適合用於新增或更新資料。 - 不可變性(Immutability):在 HTTP 協議中,
GET方法被設計為"安全的",不管發出幾次請求,都不必擔心這會對 server 上的資料造成變動。