RESTful 風格 介紹


 

 

華潤五彩城, 清河中街

RESTful Web Service

使用SpringMVC 實現RESTful  {  REST RESTful Web Service  }

 

···  REST是什么 ?

REST表述性狀態傳遞(英文:Representational State Transfer,簡稱REST)是Roy Fielding博士在2000年他的博士論文中提出來的一種軟件架構風格。它是一種針對網絡應用的設計和開發方式,可以降低開發的復雜性,提高系統的可伸縮性。

REST Web服務的一種架構風格

使用HTTPURL 等廣泛流行的標准和協議

輕量級、跨平台‘跨語言的架構設計。

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的組成;  - 網絡協議(httphttps-服務器地址

             - 接口名稱     -  ?參數列表

·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錯誤提示   接口未實現

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM