在理解 OpenStack 的過程中,常常遇到 REST 這個概念,現從各處搜羅如下:
對 Web Service 的理解:
Web 服務有點像對計算機友好的網頁,基於讓程序可以跨網絡交換信息的標准和協議,一般是使用一個程序,也就是客戶機或服務請求者(serice requester)請求信息或服務;使用另外一個程序,也就是服務器或服務器提供者(service provider)提供信息或服務。
它是在另外一個層次上的 Web 分析,或者可以將 Web 服務看作為用計算機控制客戶機而不是人類——所設計的動態網頁。
來自 Python基礎教程
無狀態協議:
無狀態服務器是指一種把每個請求作為與之前任何請求都無關的獨立的事務的服務器。
HTTP 服務器就是一個例子。以 URL 形式提交的客戶端請求可能包含 cookies 等帶狀態的數據,這些數據完全指定了所需的文檔,而不需要其他之前請求的上下文或內存。
來自 WikiPedia
REST
REST (REpresentation State Transfer,表述性狀態轉移) 。REST 指的是一組架構約束條件和原則。REST 從資源的角度來觀察整個網絡,分布在各處的資源由 URI 確定,而客戶端的應用通過 URI 來獲取資源的表征。REST 是設計風格而不是標准。REST 通常基於使用 HTTP,URI,和 XML 以及 HTML 這些現有的廣泛流行的協議和標准。
一些特征:
- 資源是由URI來指定。
- 對資源的操作包括獲取、創建、修改和刪除資源,這些操作正好對應HTTP協議提供的標准方法GET、POST、PUT和DELETE。
- 通過操作資源的表現形式來操作資源。
- 為所有”事物”定義ID
- 將所有事物鏈接在一起
- 資源多重表述
- 無狀態通信
REST中的資源:
在服務器端,應用程序狀態和功能可以分為各種資源。資源是一個有趣的概念實體,它向客戶端公開。資源的例子有:應用程序對象、數據庫記錄、算法等等。每個資源都使用 URI (Universal Resource Identifier) 得到一個惟一的地址。
REST中的無狀態:
Web 應用程序最重要的 REST 原則是,客戶端和服務器之間的交互在請求之間是無狀態的。從客戶端到服務器的每個請求都必須包含理解請求所必需的信息。如果服務器在請求之間的任何時間點重啟,客戶端不會得到通知。此外,無狀態請求可以由任何可用服務器回答,這十分適合雲計算之類的環境。客戶端可以緩存數據以改進性能。
RESTful:
滿足 REST 的應用程序或設計就是 RESTful。
原文地址:http://hiaero.net/rest-and-restful
補充:
看了一些資料以后,我發現其實自己之前設計的一些接口多多少少也算RESTful或者接近RESTful,既然是一種設計風格不是標准,那其實也沒必要非得這樣做,還是怎么好用怎么來,個人理解。
