文章同步於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
這也是大家很常見的請求,基本上也是最萬用的,例如
- 用於處理數據
- 張貼文章
- 建立一個全新的資源
通常會根據各種不同的狀況來回傳Status code(200, 201, 206)等等
而Request body通常會使用font以外的方式傳遞
PUT and Patch
前者用於更新資源且未帶入的column時用null時使用
後者用於更新部分資源
舉個例子
1 | | id | name | email | |
如果我今天的request body都是這樣
1 | { |
**應該要把user的email在更新一次(即使沒有改變,有的比較狠的還會把它變成null
後者則不變
**
status code多用204表示
另外,與 put 與 post 兩者的區別在於,前者在多次請求的狀況下不會對Server造成負擔,後者大部分會
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