快速學習-RESTFul設計風格

二、RESTFul設計風格

1、Rest與RestFul

REST(英文:Representational State Transfer,簡稱REST),表述性狀態轉移,指的是一組架構原則。

Restful: 遵守了rest 原則 的web服務或web應用。

2、API設計六要素

資源路徑(URI)、HTTP動詞(Method)、過濾信息(query-string)、狀態碼(Status-code)、錯誤信息(Error)、返回結果(Result)

在這裏插入圖片描述

1)資源路徑URI

資源:所有在服務器保存的數據(如:音樂/視頻/文章/個人信息…)都是服務器端資源.(項目中資源通常都是指的數據表的一條數據)

URI(Uniform Resource Identifier):統一資源標誌符,包含URL和URN。

URL(Uniform Resource Locator):統一資源定位符

URN(Uniform Resource Name):統一資源命名

在HTTP協議中, URI的組成如下

Schema://host[:port]/path[?query-string]

Schema: 使用的協議類型, 如http/https/ftp等

host: 主機域名或IP

port: 端口號(可選)

path: 路徑

query-string: 查詢參數(可選)

例子:

http://www.tpshop.com/users

https://www.tpshop.com:8080/users?id=100

2)HTTP動詞(請求方式)

對於資源, 一般有4個操作, CURD(增/刪/改/查)

GET: 從服務器獲取資源(一項或多項)

POST: 在服務器新建一個資源

PUT: 在服務器更新資源, 服務器返回完整的屬性

DELETE: 從服務器刪除資源

3)過濾信息

通常也叫做請求參數或查詢字符串。

4)響應狀態碼

服務端返回的信息, 用來告訴客戶端操作結果。

常見狀態碼:

狀態碼 含義 說明
200 OK 操作成功, 並返回數據
201 CREATED 新建成功
204 NO CONTENT 刪除成功
400 BAD REQUEST 請求語法錯誤
403 Forbidden 請求沒有權限的資源
404 NOT FOUND 沒有找到請求的資源

GET

200(OK) - 表示已在響應中發出
204(無內容) - 資源有空表示
301(Moved Permanently) - 資源的URI已被更新
303(See Other) - 其他(如,負載均衡)
304(not modified)- 資源未更改(緩存)
400 (bad request)- 指代壞請求(如,參數錯誤)
404 (not found)- 資源不存在
406 (not acceptable)- 服務端不支持所需表示
500 (internal server error)- 通用錯誤響應
503 (Service Unavailable)- 服務端當前無法處理請求

POST
200(OK)- 如果現有資源已被更改
201(created)- 如果新資源被創建
202(accepted)- 已接受處理請求但尚未完成(異步處理)
301(Moved Permanently)- 資源的URI被更新
303(See Other)- 其他(如,負載均衡)
400(bad request)- 指代壞請求
404 (not found)- 資源不存在
406 (not acceptable)- 服務端不支持所需表示
409 (conflict)- 通用衝突
412 (Precondition Failed)- 前置條件失敗(如執行條件更新時的衝突)
415 (unsupported media type)- 接受到的表示不受支持
500 (internal server error)- 通用錯誤響應
503 (Service Unavailable)- 服務當前無法處理請求

PUT
200 (OK)- 如果已存在資源被更改
201 (created)- 如果新資源被創建
301(Moved Permanently)- 資源的URI已更改
303 (See Other)- 其他(如,負載均衡)
400 (bad request)- 指代壞請求
404 (not found)- 資源不存在
406 (not acceptable)- 服務端不支持所需表示
409 (conflict)- 通用衝突
412 (Precondition Failed)- 前置條件失敗(如執行條件更新時的衝突)
415 (unsupported media type)- 接受到的表示不受支持
500 (internal server error)- 通用錯誤響應
503 (Service Unavailable)- 服務當前無法處理請求

DELETE
200 (OK)- 資源已被刪除
301 (Moved Permanently)- 資源的URI已更改
303 (See Other)- 其他,如負載均衡
400 (bad request)- 指代壞請求
404 (not found)- 資源不存在
409 (conflict)- 通用衝突
500 (internal server error)- 通用錯誤響應

503 (Service Unavailable)- 服務端當前無法處理請求

5)錯誤信息

如果狀態碼是4xx或者5xx, 需要告訴客戶端對應的錯誤信息. 通常以Json格式返回:

{

“error”: “錯誤信息”,

}

6)返回結果

針對不同的操作, 服務需要返回的結果應該符合這樣的規範

GET /collections – 返回資源列表(數組)

GET /collections/:id – 返回單個資源 eg. /collections/1

POST /collections – 返回新生成的資源

PUT /collections/:id – 返回資源的完整屬性

DELETE /collections/:id – 返回204狀態碼+空文檔

實際開發中,通常會將 狀態碼、錯誤信息、返回數據,都放到返回結果中。

比如

{"code":200, 'msg':'success', "data":{"id":1,"goods_name":"tp"}}

3、RestFul接口設計風格

RESTFul是一種軟件設計風格, 主要用於有客戶端與服務端交互的軟件.

RESTFul 是目前最流行的 API 設計規範,用於 Web 數據接口的設計。

RESTFul風格的數據接口示例:

以新聞資源爲例:URI及HTTP動詞設計如下

HTTP動詞 URI路徑 說明
GET http://域名/news 獲取列表數據
GET http://域名/news/:id 根據id獲取一條數據
POST http://域名/news 添加一條數據
PUT http://域名/news/:id 根據id修改一條數據
DELETE http://域名/news/:id 根據id刪除一條數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章