概述
一個rest api被建模為可單獨尋址的資源的集合膝舅。資源以其resource name作為該資源的唯一標(biāo)識,并通過一小組method(也稱為動詞或操作)來對資源進行操作
標(biāo)準(zhǔn)的method斗蒋,如GET、POST准浴、DELETE碌补、PUT等动猬,但是當(dāng)某些功能不能簡單與標(biāo)準(zhǔn)的method做映射時啤斗,可以使用自定義的method
設(shè)計流程
- 確定API提供的資源類型
- 確定資源之間的關(guān)系
- 根據(jù)資源類型和資源之間的關(guān)系確定資源名稱方案
- 確定資源模式,將最少的method集附加到資源
資源
一組同類型的資源組成一個集合赁咙,比如一個用戶有個聯(lián)系人列表的集合钮莲。一個資源擁有一些狀態(tài)以及零個或者多個子資源,每個子資源要么是一個資源彼水,要么是一個集合
例如崔拥,Gmail API有一組用戶,每個用戶都有一組消息凤覆,一組線程链瓦,一組標(biāo)簽,一個配置文件資源和幾個設(shè)置資源
Gmail API
Gmail API服務(wù)實現(xiàn)了Gmail API并公開了大多數(shù)Gmail功能盯桦。
它具有以下資源模型:
API服務(wù):gmail.googleapis.com
用戶集合:users / *慈俯。
每個用戶都有以下資源。
消息集合:users / * / messages / *拥峦。
線程集合:users / * / threads / *贴膘。
標(biāo)簽集合:users / * / labels / *。
更改歷史記錄的集合:users / * / history / *事镣。
表示用戶配置文件的資源:users / * / profile步鉴。
表示用戶設(shè)置的資源:users / * / settings揪胃。
綜上所述璃哟,rest api要么是一個資源要么是一個集合
method
rest api的關(guān)鍵特性在于它強調(diào)資源而不是資源上執(zhí)行的method氛琢, 典型的rest api使用少量的method公開大量的資源。這些method可以是標(biāo)準(zhǔn)的也可以是自定義的随闪。自定義method提供與傳統(tǒng)RPC API相同的設(shè)計自由度阳似,可用于實現(xiàn)常見的編程模式,例如數(shù)據(jù)庫事務(wù)或數(shù)據(jù)分析
資源名
資源名稱由資源本身的ID铐伴,任何父資源的ID及其API服務(wù)名稱組成
示例
API服務(wù)名 | 集合id | 資源id | 集合id | 資源id |
---|---|---|---|---|
//storage.googleapis.com | /buckets | /bucket-id | /objects | /object-id |
//mail.googleapis.com | /users | /*@example.com | /settings | /customFrom |
自定義method
自定義method可以與資源撮奏,集合或服務(wù)相關(guān)聯(lián)。它可能需要任意請求并返回任意響應(yīng)当宴,并且還支持流請求和響應(yīng)
可以使用以下請求格式
https://service.name/v1/some/resource/name:customVerb
示例
Method Name | Custom verb | HTTP verb | Note |
---|---|---|---|
Cancel | :cancel |
POST |
Cancel an outstanding operation (build, computation etc.) |
BatchGet<plural noun> | :batchGet |
GET |
Batch get of multiple resources. (See details in the description of List) |
Move | :move |
POST |
Move a resource from one parent to another. |
Search | :search |
GET |
Alternative to List for fetching data that does not adhere to List semantics. |
Undelete | :undelete |
POST |
Restore a resource that was previously deleted. The recommended retention period is 30-day. |