restful學(xué)習(xí)筆記

RESTful架構(gòu),是目前最流行的一種互聯(lián)網(wǎng)軟件架構(gòu)。它結(jié)構(gòu)清晰、符合標(biāo)準(zhǔn)、易于理解、擴(kuò)展方便,所以正得到越來(lái)越多網(wǎng)站的采用。
REST是Representational State Transfer的縮寫(xiě)的縮寫(xiě),翻譯過(guò)來(lái)就是表現(xiàn)層狀態(tài)轉(zhuǎn)換。這里省略了主語(yǔ)Resources,它是資源的表現(xiàn)層。

  • 資源
    資源就是網(wǎng)絡(luò)上的實(shí)體,可以用URI(統(tǒng)一資源定位符)指向它,要獲取資源,訪(fǎng)問(wèn)它的rul就可以了。所謂"上網(wǎng)",就是與互聯(lián)網(wǎng)上一系列的"資源"互動(dòng),調(diào)用它的URI。

  • 表現(xiàn)層
    資源可以有多種表現(xiàn)形式,我們把"資源"具體呈現(xiàn)出來(lái)的形式,叫做它的"表現(xiàn)層"(Representation)。URI只代表資源的實(shí)體,代表資源在網(wǎng)絡(luò)的具體位置,不代表它的形式。它的具體表現(xiàn)形式,應(yīng)該在HTTP請(qǐng)求的頭信息中用Accept和Content-Type字段指定,這兩個(gè)字段才是對(duì)"表現(xiàn)層"的描述。

  • 狀態(tài)轉(zhuǎn)換
    訪(fǎng)問(wèn)一個(gè)網(wǎng)站,就代表了客戶(hù)端和服務(wù)器的一個(gè)互動(dòng)過(guò)程。在這個(gè)過(guò)程中,勢(shì)必涉及到數(shù)據(jù)和狀態(tài)的變化。
    互聯(lián)網(wǎng)通信協(xié)議HTTP協(xié)議,是一個(gè)無(wú)狀態(tài)協(xié)議。這意味著,所有的狀態(tài)都保存在服務(wù)器端。因此,如果客戶(hù)端想要操作服務(wù)器,必須通過(guò)某種手段,讓服務(wù)器端發(fā)生"狀態(tài)轉(zhuǎn)化"(State Transfer)。而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。

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

RESTFUL API的設(shè)計(jì)

  • API與用戶(hù)的通信協(xié)議,總是使用http協(xié)議
  • 應(yīng)將api部署在專(zhuān)有域名之下,或主域名之下.如:https://api.example.com或者https://example.org/api/
  • 每個(gè)網(wǎng)址代表一種資源(resource),所以網(wǎng)址中不能有動(dòng)詞,只能有名詞,而且所用的名詞往往與數(shù)據(jù)庫(kù)的表格名對(duì)應(yīng)。一般來(lái)說(shuō),API中的名詞應(yīng)該使用復(fù)數(shù)。
  • restful api直接使用http協(xié)議,所以它使用標(biāo)準(zhǔn)的http狀態(tài)碼
  • 返回結(jié)果
    • GET: 返回對(duì)象數(shù)組或單個(gè)資源對(duì)象
    • POST: 返回新生成的資源對(duì)象
    • PUT: 返回更新后完整的資源對(duì)象
    • PATCH: 返回被修改的屬性
    • DELETE: 返回204狀態(tài)碼與空對(duì)象
  • 如果狀態(tài)碼是4xx或5xx,就應(yīng)該向用戶(hù)返回出錯(cuò)信息。
  • 如果記錄數(shù)量很多,服務(wù)器不可能都將它們返回給用戶(hù)。API應(yīng)該提供參數(shù),過(guò)濾返回結(jié)果。如limit、offset、sort_by、order、page、per_page等

大量參考阮一峰的RESTful API 設(shè)計(jì)指南

最后編輯于
?著作權(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)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 解釋一 REST -- REpresentational State Transfer 直接翻譯:表現(xiàn)層狀態(tài)轉(zhuǎn)移。...
    時(shí)間之友閱讀 2,348評(píng)論 0 10
  • 前言:最近兩年很火爆的網(wǎng)絡(luò)框架Retrofit,使用它的時(shí)候,查看文檔會(huì)告訴你,要求后臺(tái)的服務(wù)器哥們必須符合RES...
    AWeiLoveAndroid閱讀 95,452評(píng)論 10 93
  • 前記:一開(kāi)始原本是想用自己的語(yǔ)言寫(xiě)一篇關(guān)于RESTful架構(gòu)的文章,然而無(wú)奈于自己也是剛剛接觸,怕理解不到位有誤導(dǎo)...
    跑者小越閱讀 2,323評(píng)論 0 0
  • 一說(shuō)到REST,我想大家的第一反應(yīng)就是“啊,就是那種前后臺(tái)通信方式。”但是在要求詳細(xì)講述它所提出的各個(gè)約束,以及如...
    時(shí)待吾閱讀 3,608評(píng)論 0 19
  • 我以為這輩子再也不會(huì)見(jiàn)到盛克亮,就像我在電腦上敲下他的名字,一字不差,讓我感到驚訝。 他就站在他的屋子后面的水泥路...
    乾子文閱讀 509評(píng)論 1 6

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