RESTful架構是一種流行的互聯網軟件架構,它結構清晰,符合標準,易於理解,擴展方便。
REST是RepresentationalState Transfer的縮寫,翻譯爲“表現層狀態轉化”。表現層其實就是資源,因此可以理解爲“資源狀態轉化”。
網絡應用上的任何實體都可以看作是一種資源,通過一個URI(統一資源定位符)指向它。
表現層(Representation)
“資源”是一種信息實體,它可以有多種外在表現形式。我們把“資源”具體呈現出來的形式叫做它的“表現層”。
例如,文本可以是txt格式表現,也可以用HTML格式,XML格式,JSON格式表現;圖片可以是JPG格式也可以是PNG格式表現等。
URI之代表資源實體,不代表它的形式。URI應該之代表“資源”的位置,而它具體的表現形式應該在HTTP請求的頭信息中用Accept和Content-Type字段指定,這兩個字段纔是對“表現層”的描述。
狀態轉化(StateTransfer)
訪問一個WEB應用就代表了客戶端與服務短的一個互動過程。HTTP協議是一個無狀態協議。因此所有的狀態都保存在服務端。如果客戶端想要操作服務器,就必須通過某種手段讓服務端發生“狀態變化”(State Transfer)。而這種狀化是建立在表現層之上的,所以就是“表現層狀態轉化”。
設計指南
請求地址
http://www.example.com/api/v1/
域名 類型 版本號
請求命令
對於資源的具體操作,由HTTP動詞表示
常用的HTTP動詞包括一下幾個,括號裏是對應的SQL命令:
GET(SELECT): 從服務器取出資源
POST(CREATE): 在服務器新建一個資源
PUT(UPDATE): 在服務器更新資源
DELETE(DELETE): 從服務器刪除資源
請求參數
如果記錄數過多,服務器不可能一次性將所有的信息返回給客戶端。API應該提供參數,過濾返回結果。下面一些常見的參數:
GET http://www.example.com/api/v1/data?offset=5&limit=10:指定返回記錄的數量
HTTP協議
協議是指計算機通信網絡中兩臺計算機之間進行通信所必須共同遵守的規定或規則,超文本傳輸協議(HTTP)是一種通信協議,它允許將超文本標記語言(HTML)文檔從Web服務器傳送到客戶端的瀏覽器。
目前我們使用的是HTTP/1.1 版本。
實際上我們輸入URL後,我們的瀏覽器給Web服務器發送了一個Request,Web服務器接到Request後進行處理,生成相應的Response,然後發送給瀏覽器,瀏覽器解析Response中的HTML,這樣我們就看到了網頁。
HTTP協議結構