天天看點

restful接口和普通接口有啥差別_RESTful接口

1.什麼是RESTful

REST是英文representational state transfer(表象性狀态轉變)或者表述性狀态轉移;Rest是web服務的一種架構風格;使用HTTP,URI,XML,JSON,HTML等廣泛流行的标準和協定;輕量級,跨平台,跨語言的架構設計;它是一種設計風格,不是一種标準,是一種思想.即滿足這些限制條件和原則的應用程式或設計就是 RESTful

2.RESTFUL特點

1、每一個URI代表1種資源;

2、用戶端使用GET、POST、PUT、DELETE4個表示操作方式的動詞對服務端資源進行操作:GET用來擷取資源,POST用來建立資源(也可以用于更新資源),PUT用來更新資源,DELETE用來删除資源;

3、通過操作資源的表現形式來操作資源;

4、資源的表現形式是XML或者HTML;

5、用戶端與服務端之間的互動在請求之間是無狀态的,從用戶端到服務端的每個請求都必須包含了解請求所必需的資訊。

3.HTTP動詞

這些動詞一般預設為:

GET 根據使用者id查詢使用者資料

POST 新增使用者

PUT 修改使用者資訊

DELETE 删除使用者資訊

restful接口和普通接口有啥差別_RESTful接口
restful接口和普通接口有啥差別_RESTful接口

常用的HTTP動詞:

GET(SELECT):從伺服器取出資源(一項或多項)。

POST(CREATE):在伺服器建立一個資源。

PUT(UPDATE):在伺服器更新資源(用戶端提供改變後的完整資源)(修改全部資料)

PATCH(UPDATE):在伺服器更新資源(用戶端提供改變的屬性)(修改部分資料)

DELETE(DELETE):從伺服器删除資源。

不常用的HTTP動詞:

HEAD:擷取資源的中繼資料。

OPTIONS:擷取資訊,關于資源的哪些屬性是用戶端可以改變的。

例子:

GET /zoos:列出所有動物園

POST /zoos:建立一個動物園

GET /zoos/ID:擷取某個指定動物園的資訊

PUT /zoos/ID:更新某個指定動物園的資訊(提供該動物園的全部資訊)

PATCH /zoos/ID:更新某個指定動物園的資訊(提供該動物園的部分資訊)

DELETE /zoos/ID:删除某個動物園

GET /zoos/ID/animals:列出某個指定動物園的所有動物

DELETE /zoos/ID/animals/ID:删除某個指定動物園的指定動物

4.過濾資訊

如果記錄數量很多,伺服器不可能都将它們傳回給使用者。API應該提供參數,過濾傳回結果。

下面是一些常見的參數。

?limit=10:指定傳回記錄的數量

?offset=10:指定傳回記錄的開始位置。

?page=2&per_page=100:指定第幾頁,以及每頁的記錄數。

?sortby=name&order=asc:指定傳回結果按照哪個屬性排序,以及排序順序。

?animal_type_id=1:指定篩選條件

參數的設計允許存在備援,即允許API路徑和URL參數偶爾有重複。比如,GET /zoo/ID/animals 與 GET /animals?zoo_id=ID 的含義是相同的。

5.狀态碼

伺服器向使用者傳回的狀态碼和提示資訊,常見的有以下一些:

200 OK - [GET]:伺服器成功傳回使用者請求的資料,該操作是幂等的(Idempotent)。

201 CREATED - [POST/PUT/PATCH]:使用者建立或修改資料成功。

202 Accepted - [*]:表示一個請求已經進入背景排隊(異步任務)

204 NO CONTENT - [DELETE]:使用者删除資料成功。

400 INVALID REQUEST -[POST/PUT/PATCH]:使用者發出的請求有錯誤,伺服器沒有進行建立或修改資料的操作,該操作是幂等的。

401 Unauthorized - [*]:表示使用者沒有權限(令牌、使用者名、密碼錯誤)。

403 Forbidden - [*] 表示使用者得到授權(與401錯誤相對),但是通路是被禁止的。

404 NOT FOUND - [*]:使用者發出的請求針對的是不存在的記錄,伺服器沒有進行操作,該操作是幂等的。

406 Not Acceptable - [GET]:使用者請求的格式不可得(比如使用者請求JSON格式,但是隻有XML格式)。

410 Gone -[GET]:使用者請求的資源被永久删除,且不會再得到的。

422 Unprocesable entity - [POST/PUT/PATCH] 當建立一個對象時,發生一個驗證錯誤。

500 INTERNAL SERVER ERROR - [*]:伺服器發生錯誤,使用者将無法判斷發出的請求是否成功。

繼續閱讀