第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁(yè) 慕課教程 HTTP 入門(mén)教程 HTTP 入門(mén)教程 RESTFUL 開(kāi)發(fā)設(shè)計(jì)規(guī)范

RESTFUL 開(kāi)發(fā)設(shè)計(jì)規(guī)范

上節(jié)我們剛了解完 URI ,知道它是一種資源標(biāo)識(shí),而 URL 是 schema = Http 的子標(biāo)識(shí),本節(jié)要講的 Restful 從小的講是對(duì) URL 格式提出了限制,對(duì)接口設(shè)計(jì)規(guī)范的倡導(dǎo),大的說(shuō)它是一種通信架構(gòu)的指導(dǎo)。

1. RESTFUL 的誕生

1.1 作者

Restful 是由 Roy Thomas Fielding 博士在 2000 年所著的博士論文提起的,系統(tǒng)全面地闡述了 REST 的架構(gòu)風(fēng)格和設(shè)計(jì)思想,這位作者同時(shí)是 HTTP、URI等 Web 架構(gòu)標(biāo)準(zhǔn)的主要設(shè)計(jì)者,因此他提出的 REST 概念得到很多人的關(guān)注和響應(yīng)。

1.2 背景

Web 網(wǎng)站從最初的靜態(tài)資源展示,演變成后來(lái)的動(dòng)態(tài)網(wǎng)站,到現(xiàn)在大部分的軟件都在往云上遷移,之前很多桌面應(yīng)用現(xiàn)在都盡量地改造成 Web 系統(tǒng),用戶不需要下載安裝繁瑣的軟件,打開(kāi)瀏覽器輸入地址即可使用。

在這么一個(gè)背景下,Web 系統(tǒng)的通信架構(gòu)變得尤為重要。Roy Thomas Fielding 在論文中提到:“我這篇文章的寫(xiě)作目的,就是想在符合架構(gòu)原理的前提下,理解和評(píng)估以網(wǎng)絡(luò)為基礎(chǔ)的應(yīng)用軟件的架構(gòu)設(shè)計(jì),得到一個(gè)功能強(qiáng)、性能好、適宜通信的架構(gòu)。REST 指的是一組架構(gòu)約束條件和原則?!?/p>

Tips:有興趣的同學(xué)可以詳細(xì)的看下REST 論文

2. RESTFUL 的思想內(nèi)容

Rest(Representational State Transfer),從詞面上來(lái)解析是 表述性狀態(tài)轉(zhuǎn)移。我們知道 URI 是一種標(biāo)識(shí),這個(gè)標(biāo)識(shí)不管是地址還是昵稱,他都只是一個(gè)名詞(URL 上面最好不要用動(dòng)詞),API 接口是有 增刪改查 一系列動(dòng)作,將 URL 與行為狀態(tài)的結(jié)合就是 Restful 的核心思想。一個(gè) API 請(qǐng)求我們既要知道它要操作的是哪個(gè)資源,也要知道它要對(duì)這個(gè)資源進(jìn)行什么操作。

2.1 API 接口規(guī)范

Restful 提倡將接口的行為狀態(tài)放到了 Http 的頭部 method 里。對(duì)同一個(gè)資源的不同操作,接口 URL 可能是一樣的。行為規(guī)約主要有下面幾項(xiàng):

GET

查詢資源,不會(huì)對(duì)資源產(chǎn)生變化的都用 GET。

例:查詢慕課網(wǎng) http Wiki 教程的所有小節(jié)列表:

GET http://idcbgp.cn/http

如果資源查詢的過(guò)程需要帶過(guò)濾參數(shù),建議使用 URL 參數(shù)的形式:
例:查詢慕課網(wǎng) http 小節(jié)中作者是 rj 的文章

GET http://idcbgp.cn/http?author=rj

例:查詢慕課網(wǎng) http 里面 id = 1 的文章

GET http://idcbgp.cn/http/1

POST

新增某個(gè)資源:

POST http://idcbgp.cn/http

具體的參數(shù)放請(qǐng)求體中

{
"title":"restful",
"author":"rj",
"content":"xxxxxx"
}

PUT

資源的修改:

PUT http://idcbgp.cn/http/{articleId}

具體的參數(shù)放請(qǐng)求體中

{
"title":"restful",
"author":"rj",
"content":"xxxxxx"
}

PATCH

PATCH http://idcbgp.cn/http/{articleId}

patchput 都是修改的意思,put 類型的修改請(qǐng)求體中需要包含全量的對(duì)象信息,而 patch 只需要帶上要修改的某幾個(gè)對(duì)象即可,沒(méi)有帶上的參數(shù)就代表不更新,采用原來(lái)的值。

具體的參數(shù)放請(qǐng)求體中

{
"title":"aaa"
}

DELETE

刪除資源:

DELETE http://idcbgp.cn/http/{articleId}

2.2 REST 架構(gòu)

大部分人認(rèn)識(shí)的 REST 都是一個(gè) API 的定義風(fēng)格,但它其實(shí)定義的是一整個(gè)軟件的通信架構(gòu)。不過(guò)我覺(jué)得不理解這部分問(wèn)題不大,因?yàn)槿绻f(shuō) Web 的架構(gòu),那真的是太豐富了,主要還是要尋找適合自己業(yè)務(wù)的。本著知識(shí)拓展,我們來(lái)了解下 REST 對(duì)架構(gòu)都做了哪些約束:

  • Client-Server:客戶端/服務(wù)端 模式的架構(gòu);

  • Stateless:無(wú)狀態(tài),服務(wù)端不保存客戶端信息;

  • Cache:客戶端可以緩存服務(wù)端數(shù)據(jù);

  • Uniform Interface:統(tǒng)一接口(包含上面講的 API 約束);

  • Layered System:分層架構(gòu),職責(zé)明確,方便拓展等;

  • Code-on-Demand:客戶端從服務(wù)器獲取需要的代碼,在客戶端處執(zhí)行。這個(gè)我覺(jué)得在邊緣計(jì)算的場(chǎng)景可以應(yīng)用,客戶端按需從中心拉取代碼,實(shí)現(xiàn)不同效果的處理計(jì)算。比如我要識(shí)別天氣就拉取天氣相關(guān)代碼,要識(shí)別花草就拉取花草的識(shí)別算法,就可以無(wú)限的賦能(可能將傳感器識(shí)別的信息上傳到云端分析所消耗的帶寬比獲取一個(gè)相應(yīng)場(chǎng)景的算法來(lái)得大),想想還是不錯(cuò)的。

3. 小結(jié)

Restful 風(fēng)格一般指的是 API 的設(shè)計(jì)規(guī)范,REST 是由 Roy Thomas Fielding 教授提出來(lái)的,該作者同時(shí)是 HTTP 協(xié)議的重要參與者。REST 的論文中對(duì) Web 系統(tǒng)機(jī)構(gòu)提出了一些指導(dǎo)的理論,這些思想都非常不錯(cuò),但是我們今天的軟件架構(gòu)正變得越來(lái)越復(fù)雜,熔斷 / 限流 / 鏈路跟蹤 等等,還有很多要考慮的。