REST API 設(shè)計

概述

一個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.

參考

Google API Design

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末畜吊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子户矢,更是在濱河造成了極大的恐慌玲献,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梯浪,死亡現(xiàn)場離奇詭異捌年,居然都是意外死亡,警方通過查閱死者的電腦和手機挂洛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門礼预,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人虏劲,你說我怎么就攤上這事托酸。” “怎么了柒巫?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵励堡,是天一觀的道長。 經(jīng)常有香客問我吻育,道長念秧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任布疼,我火速辦了婚禮摊趾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘游两。我一直安慰自己砾层,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布贱案。 她就那樣靜靜地躺著肛炮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侨糟,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天碍扔,我揣著相機與錄音,去河邊找鬼秕重。 笑死不同,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的溶耘。 我是一名探鬼主播二拐,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凳兵!你這毒婦竟也來了百新?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤庐扫,失蹤者是張志新(化名)和其女友劉穎饭望,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體聚蝶,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡杰妓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了碘勉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巷挥。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖验靡,靈堂內(nèi)的尸體忽然破棺而出倍宾,到底是詐尸還是另有隱情,我是刑警寧澤胜嗓,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布高职,位于F島的核電站,受9級特大地震影響辞州,放射性物質(zhì)發(fā)生泄漏怔锌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一变过、第九天 我趴在偏房一處隱蔽的房頂上張望埃元。 院中可真熱鬧,春花似錦媚狰、人聲如沸岛杀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽类嗤。三九已至糊肠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間遗锣,已是汗流浹背货裹。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留黄伊,地道東北人泪酱。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓派殷,卻偏偏與公主長得像还最,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子毡惜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 去年有段時間得空拓轻,就把谷歌GAE的API權(quán)威指南看了一遍,收獲頗豐经伙,特別是在自己幾乎獨立開發(fā)了公司的云數(shù)據(jù)中心之后...
    騎單車的勛爵閱讀 20,536評論 0 41
  • Flask之REST&API設(shè)計 一扶叉、REST(一種軟件架構(gòu)風(fēng)格) 一)、問題 網(wǎng)絡(luò)應(yīng)用程序帕膜,分為前端和后端兩個部...
    月亮是我踢彎得閱讀 2,198評論 0 2
  • 前言:如果你有更好的私藏文章枣氧,不凡分享出來,獨樂樂不如眾樂樂(⊙o⊙) 本文總結(jié)了 RESTful API 設(shè)計相...
    utopia84閱讀 4,027評論 2 35
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理垮刹,服務(wù)發(fā)現(xiàn)达吞,斷路器,智...
    卡卡羅2017閱讀 134,661評論 18 139
  • 2018-02-28 姓名:李義 公司:慈溪創(chuàng)鑫車輛零部件有限公司 組別:259期利他二組 【知~學(xué)習(xí)】 背誦 六...
    六度輪回閱讀 71評論 0 0