rest架構風格最重要的架構約束有6個:
通訊只能由客戶端單方面發起,表現為請求-響應的形式。
通訊的會話狀態(session state)應該全部由客戶端負責維護。
響應內容可以在通訊鏈的某處被快取,以改善網路效率。
通訊鏈的元件之間通過統一的介面相互通訊,以提高互動的可見性。
通過限制元件的行為(即,每個元件只能「看到」與其互動的緊鄰層),將架構分解為若干等級的層。
資源(resource)
資源的表述(representation)
狀態轉移(state transfer)
統一介面(uniform inte***ce)
超文字驅動(hypertext driven)
什麼是資源?
資源是一種看待伺服器的方式,即,將伺服器看作是由很多離散的資源組成。每個資源是伺服器上乙個可命名的抽象概念。因為資源是乙個抽象的概念,所以它不僅僅能代表伺服器檔案系統中的乙個檔案、資料庫中的一張表等等具體的東西,可以將資源設計的要多抽象有多抽象,只要想象力允許而且客戶端應用開發者能夠理解。與物件導向設計類似,資源是以名詞為核心來組織的,首先關注的是名詞。乙個資源可以由乙個或多個uri來標識。uri既是資源的名稱,也是資源在web上的位址。對某個資源感興趣的客戶端應用,可以通過資源的uri與其進行互動。
什麼是資源的表述?
什麼是狀態轉移?
狀態轉移(state transfer)與狀態機中的狀態遷移(state transition)的含義是不同的。狀態轉移說的是:在客戶端和伺服器端之間轉移(transfer)代表資源狀態的表述。通過轉移和操作資源的表述,來間接實現操作資源的目的。
什麼是統一介面?
rest要求,必須通過統一的介面來對資源執行各種操作。對於每個資源只能執行一組有限的操作。以http/1.1協議為例,http/1.1協議定義了乙個操作資源的統一介面,主要包括以下內容:
rest還要求,對於資源執行的操作,其操作語義必須由http訊息體之前的部分完全表達,不能將操作語義封裝在http訊息體內部。這樣做是為了提高互動的可見性,以便於通訊鏈的中間元件實現快取、安全審計等等功能。
什麼是超文字驅動?
在超**之中不僅僅包含資料,還包含了狀態遷移的語義。以超**作為引擎,驅動web應用的狀態遷移。通過超**暴露出伺服器所提供的資源,伺服器提供了哪些資源是在執行時通過解析超**發現的,而不是事先定義的。從面向服務的角度看,超**定義了伺服器所提供服務的協議。客戶端應該依賴的是超**的狀態遷移語義,而不應該對於是否存在某個uri或uri的某種特殊構造方式作出假設。一切都有可能變化,只有超**的狀態遷移語義能夠長期保持穩定。
rest風格的架構所具有的6個主要特徵:
有一篇很有趣的文章生動形象的向我們介紹了什麼是restful
Restful風格學習經驗
restful風格是目前來說最流行的網際網路軟體架構,它並不是一種標準,而是乙個開發架構的思想風格。那麼究竟怎麼樣的風格算是rest呢,查了一些資料有了一些了解,寫了乙個demo參考一下。首先說一下rest,它的全稱是representational state transfer,翻譯過來是表現層或...
RESTful風格學習小記
參考資料 1 3 restful不是一種技術,而只是一種api介面設計規範。凡是符合該規範的設計,都可以認為restful風格的服務。但是由於各開發人員對restful的理解存在誤區或者業務特殊場景,因此實際生產的環境中真正完全滿足restful風格的服務並不多,也沒有必要。但是在實際的應用中,有r...
設計風格 Restful
rest是設計風格而不是標準,只提供了一組設計原則和約束條件 資源由uri來指定 uri 統一資源識別符號 對資源的包括包括獲取 建立 修改 和刪除資源 這些操作正好對應http協議提供的get post put和delete方法 通過操作資源的表現形式來操作資源 非rest風格url http q...