華潤五彩城, 清河中街
RESTful Web Service
使用SpringMVC 實現RESTful { REST 和 RESTful Web Service }
··· REST是什么 ?
REST即表述性狀態傳遞(英文:Representational State Transfer,簡稱REST)是Roy Fielding博士在2000年他的博士論文中提出來的一種軟件架構風格。它是一種針對網絡應用的設計和開發方式,可以降低開發的復雜性,提高系統的可伸縮性。
REST 是Web服務的一種架構風格
使用HTTP、URL 等廣泛流行的標准和協議
輕量級、跨平台‘跨語言的架構設計。
REST是一種設計風格。它不是一種標准,也不是一種軟件,而是一種思想。
REST通常基於使用HTTP ,URL ,和XML,json 以及 HTML這些現有的廣泛流行的協議和標准。
··· RESTful是什么?
· RESTful對應的中文是 REST 式的。
· RESTful Web Service是一種常見的REST的應用,是遵守了REST風格的Web服務。
· REST式的Web服務是一種ROA (面向自資源的架構)
··· REST 架構的主要原則
·網絡上的所有事物都可以被抽象為資源 (Resource)
·每個資源都有一個唯一的資源標識符 (Resource identifier)
·同一資源具有多種表現形式 (XML JSON等)
·對資源的各種操作不會改變資源標識符。
·所有的操作都是無狀態的 (Stateless)
·符合REST原則的架構方式即可稱為RESTful
··· URI 和 URL
URI - http://example.com/users/
URL http://example.com/users/{user}{one for each user}
··· RESTful的無狀態性:
·無狀態性使得客戶端和服務端不必保存對方的詳細信息,服務器只需要處理當前Request,而不必了解前面Request的歷史。從而可以更容易地釋放資源。
讓服務器充分利用Pool技術來提高穩定性。
··· 資源操作 < 學習的核心 >
·http://example.com/users/
- GET : 獲得一個資源
POST : 創建一個新的資源
PUT : 修改一個資源的狀態
DELETE : 刪除一個資源
·資源展現
-- XML --JSON -..........
對比:
之前的操作:
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 刪除用戶數據
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 刪除用戶數據
REST接口定義
http方法 資源操作 冪等 安全
GET SELECT 是 是
POST INSERT 否 否
PUT UPDATE 是 是
DELETE DELETE 是 否
冪等性:同一REST接口的多次訪問,得到的資源狀態是相同的。
安全性:對該REST 接口訪問,不會使服務器端資源的狀態發生改變。
REST接口設計:
·URL的組成; - 網絡協議(http、https) -服務器地址
- 接口名稱 - ?參數列表
·URL定義限定 - 不要使用大寫字母
- 使用中線 - 代替下划線_
- 參數列表應該被encode過
響應設計:
·Content body 僅僅用來傳輸數據。
·數據要做到拿來就可用的原則,不需要”拆箱“的過程。
·用來描述數據或者請求的元數據放Header中,例如 X- Result-Fields。
示例:
Response Headers:
Status :200
Response Body:{
“trade_id” :1234,
“trade_name” : “BaLa BaLa”
}
Http 響應:
Code Http Operation Body Contents Description
200 GET ,PUT 資源 操作成功
201 POST 資源,元數據 對象創建成功
202 POST,PUT,DELETE,PATCH N/A 請求已經被接受
204 DELETE,PUT,PATCH N/A 操作執行成功,但無返回類型
301 GET link 資源已被移除
303 GET link 重定向
304 GET N/A 資源沒有被修改
400 GET,POST,,PUT,,DELETE,PATCH錯誤提示 參數列表錯誤缺少,格式不匹配
401 GET,POST,PUT,DELETE,,PATCH錯誤提示 未授權
403 GET,POST,PUT,DELETE,PATCH錯誤提示 訪問受限,授權過期
404 GET,POST,PUT,DELETE,,PATCH錯誤提示 資源,服務未找到
405 GET,POST,PUT,DELETE,,PATCH錯誤提示 不允許的http方法
409 GET,POST,PUT,DELETE,,PATCH錯誤提示 資源沖突,或者資源被鎖定
415 GET,POST,PUT,DELETE,,PATCH錯誤提示 不支持的數據(媒體)類型
429 GET,POST,PUT,DELETE,,PATCH錯誤提示 請求過多被限制
500 GET,POST,PUT,DELETE,,PATCH錯誤提示 系統內部錯誤
501 GET,POST,PUT,DELETE,,PATCH錯誤提示 接口未實現