一.REST起源
REST(Representational State Transfer)表象化狀態轉變(表述性狀態轉變),在2000年被提出,基於HTTP、URI、XML、JSON等標準和協議,支持輕量級、跨平臺、跨語言的架構設計,是Web服務的一種新的架構風格(一種思想)。
1.什麼是輕量級:
代碼不被侵入(正例:SpringMVC中不用接口和繼承,僅用註解完成。反例:Struts中每一個Action都要繼承核心控制器),輕量級跟包大小無關。耦合性越低,越輕量。
二.REST架構的主要原則
對網絡上所有的資源都有一個資源標誌符。
對資源的操作不會改變標識符。
同一資源有多種表現形式(xml、json)
所有操作都是無狀態的(Stateless)
符合上述REST原則的架構方式稱爲RESTful
1.URI和URL區別:
URI:http://example.com/users/
URL:http://example.com/users/{user} (one for each user)
2.什麼是無狀態性:
使得客戶端和服務器端不必保存對方的詳細信息,服務器只需要處理當前的請求,不需瞭解請求的歷史。可以更容易的釋放資源,讓服務器利用Pool(連接池)技術來提高穩定性和性能。
三.RESTful介紹
RESTful是一種常見的REST應用,是遵循REST風格的web服務,REST式的web服務是一種ROA(面向資源的架構)。
1.RESTful資源操作
冪等性:對同一REST接口的多次訪問,得到的資源狀態是相同的。
安全性:對該REST接口訪問,不會使服務器端資源的狀態發生改變。
2.接口示例:
2.1.傳統URL請求格式:
http://127.0.0.1/user/query/1 GET 根據用戶id查詢用戶數據
http://127.0.0.1/user/save POST 新增用戶
http://127.0.0.1/user/update POST 修改用戶信息
http://127.0.0.1/user/delete GET/POST 刪除用戶信息
2.2.RESTful請求格式:
http://127.0.0.1/user/1 GET 根據用戶id查詢用戶數據
http://127.0.0.1/user POST 新增用戶
http://127.0.0.1/user PUT 修改用戶信息
http://127.0.0.1/user DELETE 刪除用戶信息
3.響應設計
原則:數據接收到即可使用,無需拆箱。
在一次請求中,content body僅僅用於傳輸數據。Header中存放描述請求或請求的元數據,例如 X-Result-Fields。
4.http響應狀態碼
根據http響應碼,判斷請求狀態,進而做出提醒。
四.RESTful的使用
下面將用實際代碼演示RESTful做增刪改查的操作使用示例:
1.查詢get:
查詢測試:
2.新增post:
新增測試:
AJAX調用:
3.更新put:
4.刪除delete:
五.結語
至此,RESTful的介紹和使用已經完成,RESTful已在各互聯網公司接口定義中,成爲主流的範式,RESTful減少了傳統請求的拆裝箱操作,結構清晰,在接口定義中受到前後端開發者的青睞。