日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

REST API解析

發(fā)布時(shí)間:2024/9/19 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 REST API解析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

REST API

第一次接觸REST API時(shí)有些迷惑,后來查閱了一些相關(guān)的文章并結(jié)合上自己的一些總結(jié),總算對(duì)其有粗略的了解。

1. 起源

? REST這個(gè)詞,是Roy Thomas Fielding在他2000年的博士論文中提出的。關(guān)于他,這里簡(jiǎn)單介紹一下:他是HTTP協(xié)議(1.0版和1.1版)的主要設(shè)計(jì)者、Apache服務(wù)器軟件的作者之一、Apache基金會(huì)的第一任主席。這樣也不難理解,為什么他的這篇論文一經(jīng)發(fā)表,就引起了關(guān)注,并且立即對(duì)互聯(lián)網(wǎng)開發(fā)產(chǎn)生了深遠(yuǎn)的影響。(畢竟是大佬)。

? REST,即Representational State Transfer的縮寫,中文翻譯叫:“表現(xiàn)層狀態(tài)轉(zhuǎn)化”。從其名字來看的確難以讀懂這是個(gè)什么東西。而我是這么理解的:對(duì)服務(wù)器端的API操作等能從URI(統(tǒng)一資源定位符)中體現(xiàn)出來就叫做REST。簡(jiǎn)單地說:就是能從URI的字段中體現(xiàn)對(duì)后端發(fā)起何種請(qǐng)求就叫做"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。也就是實(shí)現(xiàn)某URL所代表資源的狀態(tài)轉(zhuǎn)移。(聽起來可能別扭)

2. REST是什么?

? 對(duì)于REST我更愿意把他理解為是一種對(duì)HTTP API的一種規(guī)范和約束,或者說是一種API設(shè)計(jì)思想,事實(shí)上它本質(zhì)上也體現(xiàn)了這點(diǎn)。

RESTful 的核心思想就是,客戶端發(fā)出的數(shù)據(jù)操作指令都是"動(dòng)詞 + 賓語(yǔ)"的結(jié)構(gòu)。

根據(jù) HTTP 標(biāo)準(zhǔn),HTTP 請(qǐng)求可以使用多種請(qǐng)求方法:

  • HTTP1.0 定義了三種請(qǐng)求方法: GET, POST 和 HEAD方法。
  • HTTP1.1 新增了六種請(qǐng)求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

而REST核心就是能使用HTTP中其中定義的5種HTTP請(qǐng)求方法對(duì)應(yīng)上CRUD 操作。

2.1 對(duì)應(yīng)上CRUD操作

以下是5種HTTP請(qǐng)求方法對(duì)應(yīng)上CRUD 操作:

GET:讀取(Read) POST:新建(Create) PUT:更新(Update) PATCH:部分更新(Update) DELETE:刪除(Delete)

也就是說服務(wù)程序中的特定操作被映射成為標(biāo)準(zhǔn)的 HTTP 方法——為了消除歧義,而非直接通過GET,POST的方式直接調(diào)用后端某些CRUD的數(shù)據(jù)操作接口。

就像下面這種圖一樣:

這樣約束地話的確可以通過URL和請(qǐng)求方式就能大概知道我們想干什么了。

2.2舉例

我想查找ID為1的訂單,我就可以通過:

GET http://example.com/order/1

創(chuàng)建一個(gè)新訂單可以:

POST http://example.com/order #在HTTP請(qǐng)求體中發(fā)送要添加的訂單的信息 {id:1,order:"MIX 8",num:2,... }

修改數(shù)量

PUT http://example.com/order #PUT為全跟新,所以HTTP請(qǐng)求體中發(fā)送要訂單全部信息, #達(dá)到覆蓋修改 {id:1,order:"MIX 8",num:1,... }

刪除第一條訂單:

DELETE http://example.com/order/1

這里只是簡(jiǎn)單地舉個(gè)例子,具體看實(shí)際情況而定。所以說,REST我更愿意把他理解為是一種對(duì)HTTP API的一種規(guī)范和約束,或者說是一種API設(shè)計(jì)思想。

2.3 應(yīng)該遵循關(guān)鍵原則

當(dāng)然這些原則其實(shí)是來自一篇文章https://www.infoq.cn/article/rest-introduction/,在文章中作者對(duì)REST作了總結(jié)并對(duì)其5條關(guān)鍵原則了做解析。

五條關(guān)鍵原則列舉如下:

  • 為所有“事物”定義 ID
  • 將所有事物鏈接在一起
  • 使用標(biāo)準(zhǔn)方法
  • 資源多重表述
  • 無狀態(tài)通信

3. 覆蓋GET和POST

有些客戶端只能使用GET和POST這兩種方法。服務(wù)器必須接受POST模擬其他三個(gè)方法(PUT、PATCH、DELETE)。這時(shí),客戶端發(fā)出的 HTTP 請(qǐng)求,要加上X-HTTP-Method-Override屬性,從而告知服務(wù)器應(yīng)該使用哪一個(gè)HTTP請(qǐng)求方式解析該請(qǐng)求,覆蓋POST方法。

POST http://example.com/order/ #在請(qǐng)求體頭部添加 X-HTTP-Method-Override: PUT

總結(jié)

以上是生活随笔為你收集整理的REST API解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。