Introduction of RESTful level & HATEOAS

REST level服務器

  1. 0級
    傳統的RPC,基於SOAP的WS,調用的服務名,參數放在HTTP協議的body裏面,同時必須以POST方式提交,問題在於你必須清楚的知道全部服務,子服務,及其參數的信息,而且須要知道各類服務的不一樣點
  2. 1級
    利用resource概念,把全部服務都抽取成resource概念,從body中提取到header裏,這樣作的好處就是若是你知道一個服務地址,你可能無需知道具體服務是什麼,依照資源的慣例就訪問到服務,好比/books/1
  3. 2級
    利用HTTP動詞,HTTP定義了4種動詞,GET獲取服務器資源,POST在服務器上建立新資源,PUT更改服務器上資源,DELETE刪除服務器上資源,任何操做均可以當作增刪改查,因此利用標準的http verb加上resource(/book/1)就能準確地操做資源,當你不知道服務具體是什麼的時候也能夠輕易按照慣例訪問到服務,然而服務供應商更改服務也須要遵循慣例,不會像RPC那樣輕易更改服務接口。
  4. 3級
    最高級別,超媒體既應用狀態引擎。這個意思是說,對於任何服務都存在不少子服務,你只須要知道第一個服務的入口,即可以依據服務返回結構的自描述性獲得下一個服務的入口,這樣在服務供應商修改服務的時候,不會影響到客戶端的調用。

RESTful架構網絡

  • 資源
    REST的名稱"表現層狀態轉化"中,省略了主語。"表現層"其實指的是"資源"(Resources)的"表現層"。
    所謂"資源",就是網絡上的一個實體,或者說是網絡上的一個具體信息
  • 表現層
    "資源"是一種信息實體,它能夠有多種外在表現形式。咱們把"資源"具體呈現出來的形式,叫作它的"表現層"(Representation)。
  • 狀態轉換
    訪問一個網站,就表明了客戶端和服務器的一個互動過程。在這個過程當中,勢必涉及到數據和狀態的變化。
    互聯網通訊協議HTTP協議,是一個無狀態協議。這意味着,全部的狀態都保存在服務器端。所以,若是客戶端想要操做服務器,必須經過某種手段,讓服務器端發生"狀態轉化"(State Transfer)。而這種轉化是創建在表現層之上的,因此就是"表現層狀態轉化"。
    客戶端用到的手段,只能是HTTP協議。具體來講,就是HTTP協議裏面,四個表示操做方式的動詞:GET、POST、PUT、DELETE。它們分別對應四種基本操做:GET用來獲取資源,POST用來新建資源(也能夠用於更新資源),PUT用來更新資源,DELETE用來刪除資源。

RESTful架構能夠總結成如下3點
一、每一個URL表明一種資源
二、客戶端和服務器之間,傳遞這種資源的某種表現層;
三、客戶端經過四個HTTP動詞,對服務器端資源進行操做,實現"表現層狀態轉化"架構

二、HATEOAS

超媒體做爲應用程序狀態引擎(HATEOAS)是REST應用程序體系結構的一個組件,它將其與其餘網絡應用程序體系結構區分開來。
使用HATEOAS,客戶端與網絡應用程序交互,其應用程序服務器經過超媒體動態提供信息。除了對超媒體的通常理解以外,REST客戶端幾乎不須要知道如何與應用程序或服務器交互。
HATEOAS約束將客戶端和服務器分離的方式使服務器功能可以獨立發展。網站

相關文章
相關標籤/搜索