restful api 設計規範

2021-09-11 13:53:14 字數 1790 閱讀 1611

1. 同一種資料的操作,只設定乙個url路由,也就是根據請求方法的不同來區分處理邏輯

可以基於fbv來通過請求方法的不同,處理不同的邏輯,也可以基於cbv來實現。

兩種方式cbv更加簡潔,不需要判斷

2. 網域名稱

為了對使用者使用的url和網頁中使用的介面api進行區別,

(1)子網域名稱的方式區分,例如:api.baidu.com/v1/login.json

使用者一看網域名稱是以api開頭的,就知道就介面,返回的是json資料

(2)url的方式進行區分

例如:www.baidu.com/api/v1/login.json

第一種方式需要解決跨域請求的問題,也就是當網域名稱不同或者埠不同的時候,都會出現跨域請求。

第二種,保證了網域名稱和埠的一致性,只是url不一樣而已

跨域:因為瀏覽器的同源策略,當你通過瀏覽器向www.baidu.com前端頁面傳送請求的時候,網頁需要向後台請求介面,但是如果介面的網域名稱和當前的網域名稱不一致,就會出現跨源請求的錯誤,無法訪問到頁面。而跨源是網頁向api傳送請求之後,伺服器響應了這個請求,但是是瀏覽器端把這一次請求的響應給阻止了,並不是在請求不同網域名稱的介面時,服務端不會響應這個請求。跨源是瀏覽器端的阻止行為,而不是伺服器端的。

3. 版本規則

兩個版本共存的時候,應該將api的版本號放入url中。

例如:api.example.com/api/v1/

另一種做法是將版本號放在http頭資訊中,但不如放入url中方便直觀。

4.面向資源程式設計

將網路中的任何東西都看作是資源,對資源可以進行增刪改查的操作,但是資源表示的是乙個名稱,如果乙個url後面跟的是乙個名詞(單複數都可以),所用的名詞往往與資料庫的**名對應,就表示要對這個資源進行增刪改查的操作了。而get/post/delete/put是動詞,所以url中不建議出現動詞。

例如:www.baidu.com/api/v1/order/ (遵循規範)

www.baidu.com/api/v1/orders/ (遵循規範)

www.baidu.com/api/v1/get_order/ (沒有遵循規範)

5. http方法規範

get:從伺服器上獲取乙個或者多個資源

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

put:在伺服器跟新全部資源

patch:在伺服器更新部分資源

6. 過濾規範

7. 狀態碼規範(狀態碼+code碼)

後台提供的狀態碼,供前端使用。

200系列,300系列表示重定向,400系列表示客戶端錯誤,500系列表示服務端錯誤(後台**錯誤)。

但是只有狀態碼還是不夠的,請求的狀態太多,所以除了使用狀態碼表示狀態以外,還應該有code碼來表示更加詳細的請求情況。

比如:支付寶的code碼,20000,20001等

def get(self,request,*args,**kwargs):

ret =

return httpresponse(json.dumps(ret),status=201)

8. api 超連結規範

在列表頁的json中,restful希望詳情頁的url也包含在json資料中,就不用單獨的進行拼接了

RESTful API 設計規範

restful 是目前最流行的 api 設計規範,用於 web 資料介面的設計。1.1 動詞 賓語 restful 的核心思想就是,客戶端發出的資料操作指令都是 動詞 賓語 的結構。比如,get articles這個命令,get是動詞,articles是賓語。動詞通常就是五種 http 方法,對應 ...

Restful API設計規範

restful與技術無關,他是一種軟體架構的風格,rest是representational state transfer,中文翻譯為表徵狀態轉移。restful是以資源的角度來審視整個網路,將分布在網路各個節點的資源通過url進行標識,客戶端通近url來獲取資源的表徵,獲取表徵之後加上相應的動詞 ...

RESTful API設計規範

restful 是目前最流行的 api 設計規範,用於 web 資料介面的設計。它的大原則容易把握,但是細節不容易做對。本文總結 restful 的設計細節,介紹如何設計出易於理解和使用的 api。restful的核心思想就是,客戶端發出的資料 操作指令都是 動詞 賓語 的結構,比如get arti...