RESTful API 最佳實踐

2021-10-11 11:18:45 字數 1525 閱讀 1613

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

。應該盡量將 api 部署在專用網域名稱之下。

如果確定 api 很簡單,不會有進一步擴充套件,可以考慮放在主網域名稱下。

應該將 api 的版本號放入 url。

/v1/
路徑又稱"終點"(endpoint),表示 api 的具體**。

在 restful 架構中,每個**代表一種資源(resource),所以**中不能有動詞,只能有名詞,而且所用的名詞往往與資料庫的**名對應。一般來說,資料庫中的表都是同種記錄的"集合"(collection),所以 api 中的名詞也應該使用複數。

舉例來說,有乙個 api 提供動物園(zoo)的資訊,還包括各種動物和雇員的資訊,則它的路徑應該設計成下面這樣。

對於資源的具體操作型別,由 http 動詞表示。

常用的 http 動詞有下面五個(括號裡是對應的 sql 命令)。

下面是一些例子。

如果記錄數量很多,伺服器不可能都將它們返回給使用者。api 應該提供引數,過濾返回結果。

下面是一些常見的引數。

引數的設計允許存在冗餘,即允許 api 路徑和url引數偶爾有重複。比如,get /zoo/id/animals 與 get /animals?zoo_id=id 的含義是相同的。

伺服器向使用者返回的狀態碼和提示資訊,常見的有以下一些(方括號中是該狀態碼對應的 http 動詞)。

狀態碼的完全列表參見這裡。

如果狀態碼是 4xx,就應該向使用者返回出錯資訊。一般來說,返回的資訊中將 error 作為鍵名,出錯資訊作為鍵值即可。

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

restful api 最好做到 hypermedia,即返回結果中提供鏈結,連向其他 api 方法,使得使用者不查文件,也知道下一步應該做什麼。

比如,當使用者向 api.example.com 的根目錄發出請求,會得到這樣乙個文件。

}

上面**表示,文件中有乙個 link 屬性,使用者讀取這個屬性就知道下一步該呼叫什麼 api 了。rel 表示這個 api 與當前**的關係(collection 關係,並給出該 collection 的**),href 表示 api 的路徑,title 表示 api 的標題,type 表示返回型別。

hypermedia api 的設計被稱為 hateoas

。github 的 api 就是這種設計,訪問 api.github.com

會得到乙個所有可用 api 的**列表。

從上面可以看到,如果想獲取當前使用者的資訊,應該去訪問 api.github.com/user

,然後就得到了下面結果。

(1)api 的身份認證應該使用 oauth 2.0

框架。(2)伺服器返回的資料格式,應該盡量使用 json,避免使用 xml。

RESTful API 最佳實踐

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

最佳實踐 Restful API

本文介紹如何設計出易於理解和使用的api,restful api最佳實戰 restful的核心思想就是,客戶端發出的資料操作指令都是 動詞 賓語 的結構。比如,get articles這個命令,get是動詞,articles是賓語。動詞通常就是五種 http 方法,對應 crud 操作 根據 htt...

RESTful API 最佳實踐

本文首發於二 實戰小貼士 本節給出了有關 restful api 介面設計技巧速查表,可助你快速了解如何設計出最佳的 api 介面。三 http 請求方法 重點 本節講解 http 請求方法在 restful api 介面設計時的使用方法。四 api 命名規範 重點 本節講解如何設計出優秀的 api...