概述
RESTFUL的定義
RESTFUL是一種網絡應用程序的設計風格和開發方式,基於HTTP,可以使用XML格式定義或JSON格式定義。自從Roy Fielding博士在2000年他的博士論文中提出REST(Representational State Transfer)風格的軟件架構模式後,REST就基本上迅速取代了複雜而笨重的SOAP( Simple Object Access Protocol),成爲Web API的標準了。
什麼是Web API呢?
如果我們想要獲取某個電商網站的某個商品,輸入http://localhost:9999/products/123
,就可以看到id爲123的商品頁面,但這個結果是HTML頁面,它同時混合包含了Product的數據和Product的展示兩個部分。對於用戶來說,閱讀起來沒有問題,但是,如果機器讀取,就很難從HTML中解析出Product的數據。
如果一個URL返回的不是HTML,而是機器能直接解析的數據,這個URL就可以看成是一個Web API。比如,讀取http://localhost:9999/api/products/123
,如果能直接返回Product的數據,那麼機器就可以直接讀取。
REST就是一種設計API的模式。最常用的數據格式是JSON(JavaScipt Object Notation)。由於JSON能直接被JavaScript讀取,所以,以JSON格式編寫的REST風格的API具有簡單、易讀、易用的特點。
編寫API有什麼好處呢?由於API就是把Web App的功能全部封裝了,所以,通過API操作數據,可以極大地把前端和後端的代碼隔離,使得後端代碼易於測試,前端代碼編寫更簡單。
此外,如果我們把前端頁面看作是一種用於展示的客戶端,那麼API就是爲客戶端提供數據、操作數據的接口。這種設計可以獲得極高的擴展性。例如,當用戶需要在手機上購買商品時,只需要開發針對iOS和Android的兩個客戶端,通過客戶端訪問API,就可以完成通過瀏覽器頁面提供的功能,而後端代碼基本無需改動。
當一個Web應用以API的形式對外提供功能時,整個應用的結構就擴展爲:
把網頁視爲一種客戶端,是REST架構可擴展的一個關鍵。
Rest架構的主要原則
- 網絡上的所有事物都被抽象爲資源
- 每個資源都有一個唯一的資源標識符
- 同一個資源具有多種表現形式(xml,json等)
- 對資源的各種操作不會改變資源標識符
- 所有的操作都是無狀態的
- 符合REST原則的架構方式即可稱爲RESTful
本節內容有部分取於網上博客,侵刪