REST API解析
REST API
第一次接觸REST API時有些迷惑,后來查閱了一些相關(guān)的文章并結(jié)合上自己的一些總結(jié),總算對其有粗略的了解。
1. 起源
? REST這個詞,是Roy Thomas Fielding在他2000年的博士論文中提出的。關(guān)于他,這里簡單介紹一下:他是HTTP協(xié)議(1.0版和1.1版)的主要設計者、Apache服務器軟件的作者之一、Apache基金會的第一任主席。這樣也不難理解,為什么他的這篇論文一經(jīng)發(fā)表,就引起了關(guān)注,并且立即對互聯(lián)網(wǎng)開發(fā)產(chǎn)生了深遠的影響。(畢竟是大佬)。
? REST,即Representational State Transfer的縮寫,中文翻譯叫:“表現(xiàn)層狀態(tài)轉(zhuǎn)化”。從其名字來看的確難以讀懂這是個什么東西。而我是這么理解的:對服務器端的API操作等能從URI(統(tǒng)一資源定位符)中體現(xiàn)出來就叫做REST。簡單地說:就是能從URI的字段中體現(xiàn)對后端發(fā)起何種請求就叫做"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。也就是實現(xiàn)某URL所代表資源的狀態(tài)轉(zhuǎn)移。(聽起來可能別扭)
2. REST是什么?
? 對于REST我更愿意把他理解為是一種對HTTP API的一種規(guī)范和約束,或者說是一種API設計思想,事實上它本質(zhì)上也體現(xiàn)了這點。
RESTful 的核心思想就是,客戶端發(fā)出的數(shù)據(jù)操作指令都是"動詞 + 賓語"的結(jié)構(gòu)。
根據(jù) HTTP 標準,HTTP 請求可以使用多種請求方法:
- HTTP1.0 定義了三種請求方法: GET, POST 和 HEAD方法。
- HTTP1.1 新增了六種請求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
而REST核心就是能使用HTTP中其中定義的5種HTTP請求方法對應上CRUD 操作。
2.1 對應上CRUD操作
以下是5種HTTP請求方法對應上CRUD 操作:
GET:讀取(Read) POST:新建(Create) PUT:更新(Update) PATCH:部分更新(Update) DELETE:刪除(Delete)也就是說服務程序中的特定操作被映射成為標準的 HTTP 方法——為了消除歧義,而非直接通過GET,POST的方式直接調(diào)用后端某些CRUD的數(shù)據(jù)操作接口。
就像下面這種圖一樣:
這樣約束地話的確可以通過URL和請求方式就能大概知道我們想干什么了。
2.2舉例
我想查找ID為1的訂單,我就可以通過:
GET http://example.com/order/1創(chuàng)建一個新訂單可以:
POST http://example.com/order #在HTTP請求體中發(fā)送要添加的訂單的信息 {id:1,order:"MIX 8",num:2,... }修改數(shù)量
PUT http://example.com/order #PUT為全跟新,所以HTTP請求體中發(fā)送要訂單全部信息, #達到覆蓋修改 {id:1,order:"MIX 8",num:1,... }刪除第一條訂單:
DELETE http://example.com/order/1這里只是簡單地舉個例子,具體看實際情況而定。所以說,REST我更愿意把他理解為是一種對HTTP API的一種規(guī)范和約束,或者說是一種API設計思想。
2.3 應該遵循關(guān)鍵原則
當然這些原則其實是來自一篇文章https://www.infoq.cn/article/rest-introduction/,在文章中作者對REST作了總結(jié)并對其5條關(guān)鍵原則了做解析。
五條關(guān)鍵原則列舉如下:
- 為所有“事物”定義 ID
- 將所有事物鏈接在一起
- 使用標準方法
- 資源多重表述
- 無狀態(tài)通信
3. 覆蓋GET和POST
有些客戶端只能使用GET和POST這兩種方法。服務器必須接受POST模擬其他三個方法(PUT、PATCH、DELETE)。這時,客戶端發(fā)出的 HTTP 請求,要加上X-HTTP-Method-Override屬性,從而告知服務器應該使用哪一個HTTP請求方式解析該請求,覆蓋POST方法。
POST http://example.com/order/ #在請求體頭部添加 X-HTTP-Method-Override: PUT總結(jié)
以上是生活随笔為你收集整理的REST API解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sagemaker+deeplens学习
- 下一篇: 电脑横机安装电力要求以及如何连接地线电脑