出自:https://blog.csdn.net/x541211190/article/details/81141459web
一.REST起源
REST(Representational State Transfer)表象化狀態轉變(表述性狀態轉變),在2000年被提出,基於HTTP、URI、XML、JSON等標準和協議,支持輕量級、跨平臺、跨語言的架構設計。是Web服務的一種新的架構風格(一種思想)。
1.什麼是輕量級:
代碼不被侵入(正例:SpringMVC中不用接口和繼承,僅用註解完成。反例:Struts中每個Action都要繼承核心控制器),輕量級跟包大小無關。耦合性越低,越輕量。
二.REST架構的主要原則spring
符合上述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資源操做json
http方法 | 資源操做 | 冪等 | 安全 |
---|---|---|---|
GET | SELECT | 是 | 是 |
POST | INSERT | 否 | 否 |
PUT | UPDATE | 是 | 否 |
DELETE | DELETE | 是 | 否 |
冪等性:對同一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:
Service寫法:
更新測試:app
默認狀況下,PUT請求是沒法提交表單數據的,在Spring MVC項目中須要在web.xml中添加過濾器解決: less
<!-- 解決PUT請求沒法提交表單數據的問題 --> <filter> <filter-name>HttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class> </filter> <filter-mapping> <filter-name>HttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
4.刪除delete:
刪除測試:五.結語至此,RESTful的介紹和使用已經完成,RESTful已在各互聯網公司接口定義中,成爲主流的範式,RESTful減小了傳統請求的拆裝箱操做,結構清晰,在接口定義中受到先後端開發者的青睞。