REST是什么

其實(shí)在之前有使用過RESTful API,但是沒有認(rèn)真了解過REST,那么我們就來看看吧,其實(shí)很簡單哦

REST是什么

REST即表述性狀態(tài)傳遞(英文:Representational State Transfer,簡稱REST)是Roy Fielding博士在2000年他的博士論文中提出來的一種軟件架構(gòu)風(fēng)格。表述性狀態(tài)轉(zhuǎn)移是一組架構(gòu)約束條件和原則
所以簡而言之,REST是一種風(fēng)格
REST通?;谑褂?code>HTTP,URI,和XML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)子集)以及HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用)這些現(xiàn)有的廣泛流行的協(xié)議和標(biāo)準(zhǔn)。REST 通常使用 JSON 數(shù)據(jù)格式。

RESTful是什么

那么既然REST是一種風(fēng)格,RESTful又是什么呢?
RESTful是滿足這些約束條件和原則的應(yīng)用程序或設(shè)計(jì)

主要是從三個(gè)方面來看

  • 資源
    資源就是一個(gè)實(shí)體,你可以用一個(gè)URI(統(tǒng)一資源定位符)指向它,每種資源對(duì)應(yīng)一個(gè)特定的URI。要獲取這個(gè)資源,訪問它的URI就可以,因此URI就成了每一個(gè)資源的地址或獨(dú)一無二的識(shí)別符
  • 表現(xiàn)層
    把資源呈現(xiàn)出來的形式叫表現(xiàn)層,可以用HTML格式、XML格式、JSON格式表現(xiàn),REST中常用的是JSON格式
  • 狀態(tài)轉(zhuǎn)化
    訪問一個(gè)網(wǎng)站,就代表了客戶端和服務(wù)器的一個(gè)互動(dòng)過程。在這個(gè)過程中,勢(shì)必涉及到數(shù)據(jù)和狀態(tài)的變化。
    HTTP協(xié)議,是一個(gè)無狀態(tài)協(xié)議。這意味著,所有的狀態(tài)都保存在服務(wù)器端。因此,如果客戶端想要操作服務(wù)器,必須通過某種手段,讓服務(wù)器端發(fā)生"狀態(tài)轉(zhuǎn)化"。而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。
    客戶端用到的手段,只能是HTTP協(xié)議。
    1.GET用來獲取資源
    2.POST用來新建資源(也可以用于更新資源)
    3.PUT用來更新資源
    4.DELETE用來刪除資源。

綜合上面的解釋,我們總結(jié)一下什么是RESTful架構(gòu):
(1)每一個(gè)URI代表一種資源;
(2)客戶端和服務(wù)器之間,傳遞這種資源的某種表現(xiàn)層;
(3)客戶端通過四個(gè)HTTP動(dòng)詞,對(duì)服務(wù)器端資源進(jìn)行操作,實(shí)現(xiàn)"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。

設(shè)計(jì)誤區(qū)

  • URI不應(yīng)該包含動(dòng)詞,因?yàn)樗且粋€(gè)資源,動(dòng)詞應(yīng)該放在HTTP協(xié)議中
  • URI不應(yīng)該包含版本號(hào),因?yàn)椴煌陌姹?,可以理解成同一種資源的不同表現(xiàn)形式,所以應(yīng)該采用同一個(gè)URI

REST的優(yōu)點(diǎn)

  • URI具有很強(qiáng)可讀性的,具有自描述性
  • 充分利用 HTTP 協(xié)議本身語義
  • 無狀態(tài),在調(diào)用一個(gè)接口(訪問、操作資源)的時(shí)候,可以不用考慮上下文,不用考慮當(dāng)前狀態(tài),極大的降低了復(fù)雜度
  • HTTP 本身提供了豐富的內(nèi)容協(xié)商手段,無論是緩存,還是資源修改的樂觀并發(fā)控制,都可以以業(yè)務(wù)無關(guān)的中間件來實(shí)現(xiàn)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一說到REST,我想大家的第一反應(yīng)就是“啊,就是那種前后臺(tái)通信方式?!钡窃谝笤敿?xì)講述它所提出的各個(gè)約束,以及如...
    時(shí)待吾閱讀 3,601評(píng)論 0 19
  • REST本身是一個(gè)高度抽象化的架構(gòu)風(fēng)格,因而總是很難對(duì)它有一個(gè)比較深入且印象深刻的理解。寫這篇文章的目的,是自己對(duì)...
    vito1994閱讀 3,076評(píng)論 0 26
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,590評(píng)論 19 139
  • 解釋一 REST -- REpresentational State Transfer 直接翻譯:表現(xiàn)層狀態(tài)轉(zhuǎn)移。...
    時(shí)間之友閱讀 2,332評(píng)論 0 10
  • 寂靜里,滿園的玫瑰轟然綻放 乍寒乍暖中旌撼著愛的旗幟 靜靜沉入滄海桑田的殘夢(mèng) 傾訴著月盈月虧的思念 一如江流日復(fù)一...
    楚留飍閱讀 469評(píng)論 1 1

友情鏈接更多精彩內(nèi)容