RESTful風格及規範

2021-10-09 20:56:17 字數 3107 閱讀 8016

一,restful是什麼?

rest與技術無關,代表的是一種軟體架構風格(rest是representational state transfer的簡稱,中文翻譯為「表徵狀態轉移」)

2. rest從資源的角度類審視整個網路,它將分布在網路中某個節點的資源通過url進行標識

3. 所有的資料,不過是通過網路獲取的還是操作(增刪改查)的資料,都是資源,將一切資料視為資源是rest區別與其他架構風格的最本質屬性

4. 對於rest這種面向資源的架構風格,有人提出一種全新的結構理念,即:面向資源架構(roa:resource oriented architecture)

二,restfulapi設計規範

1、api與使用者的通訊協議,總是使用https協議。

2、網域名稱

1)子網域名稱方式

盡量將api部署在專用網域名稱(會存在跨域問題)

2)url方式

/api/ api很簡單

3、版本

url,如:/v1/

請求頭 跨域時,引發傳送多次請求

4、面向資源程式設計: 路徑,視網路上任何東西都是資源,均使用名詞表示(可複數)

/v1/zoos

/v1/animals

/v1/employees

5、method

get :從伺服器取出資源(一項或多項)

post :在伺服器新建乙個資源

put :在伺服器更新資源(客戶端提供改變後的完整資源)

patch :在伺服器更新資源(客戶端提供改變的屬性)

delete :從伺服器刪除資源

6、過濾,通過在url上傳參的形式傳遞搜尋條件

/v1/zoos?limit=10:指定返回記錄的數量

/v1/zoos?offset=10:指定返回記錄的開始位置

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

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

/v1/zoos?animal_type_id=1:指定篩選條件

7、狀態碼

『』『1. 2xx請求成功』』』

200 請求成功,一般用於get與post請求

201 created - [post/put/patch]:使用者新建或修改資料成功。

202 accepted - :表示乙個請求已經進入後台排隊(非同步任務)

204 no content - [delete]:使用者刪除資料成功。

『』『2. 3xx重定向』』』

301 no content - 永久重定向

#302 no content - 臨時重定向

『』『3. 4xx客戶端錯誤』』』

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] 當建立乙個物件時,發生乙個驗證錯誤。

『』『4. 5xx服務端錯誤』』』

500 internal server error - [*]:伺服器內部錯誤,無法完成請求

501 not implemented 伺服器不支援請求的功能,無法完成請求

更多狀態碼參考:

複製**

8、錯誤處理,狀態碼是4xx時,應返回錯誤資訊,error當做key

9、返回結果,針對不同操作,伺服器向使用者返回的結果應該符合以下規範

get /collection:返回資源物件的列表(陣列)

get /collection/resource:返回單個資源物件

post /collection:返回新生成的資源物件

put /collection/resource:返回完整的資源物件

patch /collection/resource:返回完整的資源物件

delete /collection/resource:返回乙個空文件

10、hypermedia api

}

三 基於django實現rest framework

200)四 rest framework 基本使用

1、安裝

pip install djangorestframework

2、djangorestframework 介紹

2.1. djangorestframework 主要使用 apiview,其實apiview實質是對 view 進行繼承加工了更多功能

2.2. 請求來了 apiview首先執行 self.dispatch 方法,此方法對 request 進行了再次封裝

RESTFUL風格的介面命名規範

1.首先restfulf風格的api是基於資源的,url命名用來定位資源,而不是表示動作,動作通過請求方式進行表示。2.url中應該單複數區分,推薦的實踐是永遠只用複數。比如get api users表示獲取使用者的列表,如果獲取單個資源,傳入id,比如 api users 123,表示獲取單個使用...

RESTful 風格 API 設計規範

建議將api部署到專用網域名稱下,如 如果不需要考慮擴充套件可以將api當做乙個模組來開發 建議將版本放入url位址中,如 v1.1 get 獲取資源 post 新建資源 delete 刪除資源 put 更新資源api應該提供引數,比如分頁,在pc端和移動端可能是不一樣的 比如pc端一頁 30 條資...

設計風格 Restful

rest是設計風格而不是標準,只提供了一組設計原則和約束條件 資源由uri來指定 uri 統一資源識別符號 對資源的包括包括獲取 建立 修改 和刪除資源 這些操作正好對應http協議提供的get post put和delete方法 通過操作資源的表現形式來操作資源 非rest風格url http q...