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 刪除用戶信息

285d4f0cd7afdbd7a9fe270160a1e1dc.png

f20d7f41208dbe9f9e8d3c806beb246a.png

常用的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 - [*]:服務器發生錯誤,用戶將無法判斷發出的請求是否成功。


免責聲明!

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



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