Restful後端API介面命名規範

2021-10-06 09:48:44 字數 2001 閱讀 9266

一句話解釋就是「通過路徑知曉訪問資源是何, 通過請求方式知道要做什麼操作」

大致遵循以下兩個規則:

請求 api 的 url 表示用來定位資源;

請求的 method 表示對這個資源進行的操作;

通過url用來定位資源,跟要進行的操作區分開,這就意味著url不該有任何動詞

下面示例中的 get、create、search 等動詞,都不應該出現在 rest 架構的後端介面路徑中。比如:

/api/getuser

/api/searchresult

/api/deleteallusers

當我們需要對單個使用者進行操作時,根據操作的方式不同可能需要下面的這些介面:

/api/getuser (用來獲取某個使用者的資訊,還需要以引數方式傳入使用者 id 資訊)

/api/updateuser (用來更新使用者資訊)

/api/deleteuser (用來刪除單個使用者)

/api/resetuser (重置使用者的資訊)

可能在更新使用者不同資訊時,提供不同的介面,比如:

/api/updateusername

/api/updateuseremail

/api/updateuser

正確的定義方式應該是

以上三種情況的弊端在於:首先加上了動詞,肯定是使 url 更長了;其次對乙個資源實體進行不同的操作就是乙個不同的 url,造成 url 過多難以管理。

其實當你回過頭看「url」這個術語的定義時,更能理解這一點。url 的意思是統一資源定位符,這個術語已經清晰的表明,乙個 url 應該用來定位資源,而不應該摻入對操作行為的描述。

url 中不應該出現任何表示操作的動詞,鏈結只用於對應資源;

url 中應該單複數區分,推薦的實踐是永遠只用複數;比如get /api/users表示獲取使用者的列表;如果獲取單個資源,傳入 id,比如/api/users/123表示獲取單個使用者的資訊;

按照資源的邏輯層級,對 url 進行巢狀,比如乙個使用者屬於某個團隊,而這個團隊也是眾多團隊之一;那麼獲取這個使用者的介面可能是這樣:get /api/teams/123/members/234 表示獲取 id 為 123 的小組下,id 為234 的成員資訊。

按照類似的規則,可以寫出如下的介面

/api/teams (對應團隊列表)

/api/teams/123 (對應 id 為 123 的團隊)

/api/teams/123/members (對應 id 為 123 的團隊下的成員列表)

/api/teams/123/members/456 (對應 id 為 123 的團隊下 id 未 456 的成員)

實際上,在http請求中,我們不只有get 和 post 可用,在 rest 架構中,有以下幾個重要的請求方法:get,post,put,delete。

顧名思義

【get】     用於對某一(些)資源的『獲取』

【post】 用於對某一(些)資源進行『建立』操作

【delete】 用於對某一(些)資源進行『刪除 』

【put】 用於對某一(些)資源進行『更新』

標準的格式是

代表api的版本資訊。

代表網域名稱 (例如: localhost / 127.0.0.1)

代表這個域(domain)下,你所訪問的資源路徑(約定的rest介面)

具體示例如下:

總結幾個關鍵點,來更清晰的表述規則。

一些其他規範:

規則1:uri結尾不應包含(/)

規則2:正斜槓分隔符(/)必須用來指示層級關係

規則3:應使用連字元( - )來提高uri的可讀性

規則4:不得在uri中使用下劃線(_)

規則5:uri路徑中全都使用小寫字母

後端nodejs的restful介面

var express require express express 讀取body中的json請求資料,前端post請求時傳送來的json物件 var bodyparser require body parser use bodyparser.urlencoded use bodyparser.j...

RESTful (俗稱 api介面文件)

api與使用者的通訊協議,總是使用https協議,確保互動資料的傳輸安全。應該盡量將api部署在專用網域名稱之下。如果確定api很簡單,不會有進一步擴充套件,可以考慮放在主網域名稱下。應該將api的版本號放入url。v 另一種做法是,將版本號放在http頭資訊中,但不如放入url方便和直觀。gith...

RESTful風格API介面及狀態碼

1.1 什麼是restful 1.web開發本質 2.restful api設計規範 1 子網域名稱方式 盡量將api部署在專用網域名稱 會存在跨 域問題 2 url方式 api api很簡單url 如 v1 請求頭跨域時,引發傳送多次請求 v1 zoos v1 animals v1 employe...