0%

【Day-17】HTTP Method

文章同步於it邦

前言

今天往設計面來做介紹,介紹Http的方法(Method)
這會跟RESTful API設計有關聯

關於RESTful API的介紹,這篇文章講得非常完整

這邊要講的是普遍上會遇到的狀況,該如何設計HTTP Method
非特殊情況可以照著原則做就好,否則容易讓人無法理解

介紹

這邊會介紹幾種 Method,分別是

  • Get
  • Post
  • Put
  • Delete
  • Patch
  • Head

Get

這個絕對是大家最常看到的請求之一,被設計用於取得資料時使用,而status code主要使用200
在Get中有一個很大的特色就是,通常request的內容都會帶在url上,所以在這個狀況下Request的內容都可以被看到
換句話說,某些不想被猜到的敏感資訊,例如:密碼
就應該想辦法讓其他人看不懂,Hash過或是改用Post

Post

這也是大家很常見的請求,基本上也是最萬用的,例如

  1. 用於處理數據
  2. 張貼文章
  3. 建立一個全新的資源
    通常會根據各種不同的狀況來回傳Status code(200, 201, 206)等等
    而Request body通常會使用font以外的方式傳遞

PUT and Patch

前者用於更新資源且未帶入的column時用null時使用
後者用於更新部分資源
舉個例子

1
2
3
4
5
|   id   |   name   |   email             |
|--------|----------|---------------------|
| 1 | Alice | alice@example.com |
| 2 | Bob | bob@example.com |
| 3 | Carol | carol@example.com |

如果我今天的request body都是這樣

1
2
3
4
{
"id": 3,
"name": "Jacob"
}

**應該要把user的email在更新一次(即使沒有改變,有的比較狠的還會把它變成null
後者則不變
**
status code多用204表示
另外,與 put 與 post 兩者的區別在於,前者在多次請求的狀況下不會對Server造成負擔,後者大部分會

DELETE

http method delete
嗯對,很白話,但真的是這樣
通常回覆200和204,我個人都用204

Head

大致上與Get相同,但是,他不會有任何回傳主體
也就是說,他只回傳Header的部分

通常用於詢問資源是否存在
例如: 檢查是否登入就是一個很好的使用Head的時機
此時我不需要回傳過多的訊息,我只是要確定是否登入
故此時使用Head就是一個不錯的做法,我不需要回傳整個主體出去

結語

對於http method的設計,我通常都會採用下方參考的說明,除非有特例我才會在專案的文件上撰寫
基本上設計上的模式是基於RESTful API也就是透過相同的URL再使用http method來做設計
不過基於RESTful API應該一堆文章我就不再多說明了

總之這篇文章是講述甚麼情況下該用什麼樣的method,明天會介紹status code

參考資料

HTTP Request Methods
HTTP 請求方法
rfc9110