API接口開(kāi)發(fā)筆記

請(qǐng)求模式

  • GET (選擇):從服務(wù)器上獲取一個(gè)具體的資源或者一個(gè)資源列表。
  • POST (創(chuàng)建): 在服務(wù)器上創(chuàng)建一個(gè)新的資源。
  • PUT(更新):以整體的方式更新服務(wù)器上的一個(gè)資源轰胁。
  • PATCH (更新):只更新服務(wù)器上一個(gè)資源的一個(gè)屬性。
  • DELETE(刪除):刪除服務(wù)器上的一個(gè)資源。
  • HEAD : 獲取一個(gè)資源的元數(shù)據(jù),如數(shù)據(jù)的哈希值或最后的更新*時(shí)間卖漫。
  • OPTIONS:獲取客戶(hù)端能對(duì)資源做什么操作的信息。

HTTP響應(yīng)碼

在用戶(hù)發(fā)出請(qǐng)求赠群,服務(wù)端對(duì)請(qǐng)求進(jìn)行響應(yīng)時(shí)羊始,給予正確的HTTP響應(yīng)狀態(tài)碼,有利于讓客戶(hù)端正確區(qū)分遇到的情況查描。

  • 200 OK - [GET]:服務(wù)器成功返回用戶(hù)請(qǐng)求的數(shù)據(jù)突委,該操作是冪等的(Idempotent)。
  • 201 CREATED - [POST/PUT/PATCH]:用戶(hù)新建或修改數(shù)據(jù)成功冬三。
  • 202 Accepted - [*]:表示一個(gè)請(qǐng)求已經(jīng)進(jìn)入后臺(tái)排隊(duì)(異步任務(wù))
  • 204 NO CONTENT - [DELETE]:用戶(hù)刪除數(shù)據(jù)成功匀油。
  • 400 INVALID REQUEST - [POST/PUT/PATCH]:用戶(hù)發(fā)出的請(qǐng)求有錯(cuò)誤,服務(wù)器沒(méi)有進(jìn)行新建或修改數(shù)據(jù)的操作勾笆,該操作是冪等的敌蚜。
  • 401 Unauthorized - [*]:表示用戶(hù)沒(méi)有權(quán)限(令牌、用戶(hù)名匠襟、密碼錯(cuò)誤)钝侠。
  • 403 Forbidden - [*] 表示用戶(hù)得到授權(quán)(與401錯(cuò)誤相對(duì))该园,但是訪(fǎng)問(wèn)是被禁止的酸舍。
  • 404 NOT FOUND - [*]:用戶(hù)發(fā)出的請(qǐng)求針對(duì)的是不存在的記錄,服務(wù)器沒(méi)有進(jìn)行操作里初,該操作是冪等的啃勉。
  • 406 Not Acceptable - [GET]:用戶(hù)請(qǐng)求的格式不可得(比如用戶(hù)請(qǐng)求JSON格式,但是只有XML格式)双妨。
  • 410 Gone -[GET]:用戶(hù)請(qǐng)求的資源被永久刪除淮阐,且不會(huì)再得到的叮阅。
  • 422 Unprocesable entity - [POST/PUT/PATCH] 當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),發(fā)生一個(gè)驗(yàn)證錯(cuò)誤泣特。
  • 500 INTERNAL SERVER ERROR - [*]:服務(wù)器發(fā)生錯(cuò)誤浩姥,用戶(hù)將無(wú)法判斷發(fā)出的請(qǐng)求是否成功。

返回值結(jié)構(gòu)

首先状您,字段的合理返回勒叠,數(shù)據(jù)的包裹。因?yàn)榉祷刂抵懈嗝希覀兂3R獙?duì)數(shù)據(jù)進(jìn)行區(qū)分分組眯分,或者按照從屬關(guān)系打包,所以柒桑,我們?cè)俜祷貢r(shí)弊决,最好有包裹的思想,把數(shù)據(jù)存放在不同的包裹中進(jìn)行返回魁淳。

{
  'error_code' : 0,
  'data' : {
                   'user_id' : 1,
                   'username' : 'xiaomin'
              },
  'server_time': 14939939
}

上面返回的JSON中飘诗,使用data來(lái)作為數(shù)據(jù)包,將所有數(shù)據(jù)統(tǒng)一以這個(gè)字段進(jìn)行包裹先改。除了data疚察,也可以用list等其他形式的包裹,命名都是自己來(lái)根據(jù)自己的需要確定的仇奶。

{
  'error_code' : 0,
  'list' : [
              {'user_id':1,'username':'xiaoming'},
              {'user_id':2,'username':'goudan'}
            ]
  'server_time': 14939939
}

總之貌嫡,不要不分包,直接把所有數(shù)據(jù)和一些你想返回的全局?jǐn)?shù)據(jù)混在一起進(jìn)行返回该溯。

其次岛抄,錯(cuò)誤碼。錯(cuò)誤碼的作用是方便查找錯(cuò)誤原因狈茉,通常情況下夫椭,我喜歡用error_code來(lái)表示,當(dāng)error_code=0時(shí)氯庆,表示沒(méi)有發(fā)生錯(cuò)誤蹭秋,當(dāng)error_code>0時(shí),發(fā)生了錯(cuò)誤堤撵,并且提供較為詳細(xì)的文檔仁讨,告訴客戶(hù)端對(duì)應(yīng)的error_code值所產(chǎn)生的錯(cuò)誤的原因和位置。

最后实昨,空白壓縮和字符轉(zhuǎn)換洞豁。也就是返回的JSON結(jié)果不要換行和空格,用一行返回結(jié)果,使整個(gè)結(jié)果文本容量最小丈挟。同時(shí)刁卜,中文等字符或結(jié)果中有引號(hào),都進(jìn)行字符轉(zhuǎn)換曙咽,防止結(jié)果無(wú)法被正確識(shí)別蛔趴。

文章摘抄:
7點(diǎn)關(guān)于RESTful規(guī)范的API接口設(shè)計(jì)的想法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市例朱,隨后出現(xiàn)的幾起案子夺脾,更是在濱河造成了極大的恐慌,老刑警劉巖茉继,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咧叭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡烁竭,警方通過(guò)查閱死者的電腦和手機(jī)菲茬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)派撕,“玉大人婉弹,你說(shuō)我怎么就攤上這事≈蘸穑” “怎么了镀赌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)际跪。 經(jīng)常有香客問(wèn)我商佛,道長(zhǎng),這世上最難降的妖魔是什么姆打? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任良姆,我火速辦了婚禮,結(jié)果婚禮上幔戏,老公的妹妹穿的比我還像新娘玛追。我一直安慰自己,他們只是感情好闲延,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布痊剖。 她就那樣靜靜地躺著,像睡著了一般垒玲。 火紅的嫁衣襯著肌膚如雪陆馁。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,328評(píng)論 1 310
  • 那天侍匙,我揣著相機(jī)與錄音氮惯,去河邊找鬼。 笑死想暗,一個(gè)胖子當(dāng)著我的面吹牛妇汗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播说莫,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼杨箭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了储狭?” 一聲冷哼從身側(cè)響起互婿,我...
    開(kāi)封第一講書(shū)人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辽狈,沒(méi)想到半個(gè)月后慈参,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刮萌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年驮配,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片着茸。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡壮锻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涮阔,到底是詐尸還是另有隱情猜绣,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布敬特,位于F島的核電站掰邢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏伟阔。R本人自食惡果不足惜尸变,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望减俏。 院中可真熱鬧召烂,春花似錦、人聲如沸娃承。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)历筝。三九已至酗昼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梳猪,已是汗流浹背麻削。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工蒸痹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人呛哟。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓叠荠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親扫责。 傳聞我的和親對(duì)象是個(gè)殘疾皇子榛鼎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)鳖孤,斷路器者娱,智...
    卡卡羅2017閱讀 134,702評(píng)論 18 139
  • API定義規(guī)范 本規(guī)范設(shè)計(jì)基于如下使用場(chǎng)景: 請(qǐng)求頻率不是非常高:如果產(chǎn)品的使用周期內(nèi)請(qǐng)求頻率非常高,建議使用雙通...
    有涯逐無(wú)涯閱讀 2,557評(píng)論 0 6
  • error code(錯(cuò)誤代碼)=0是操作成功完成苏揣。error code(錯(cuò)誤代碼)=1是功能錯(cuò)誤黄鳍。error c...
    Heikki_閱讀 3,388評(píng)論 1 9
  • 一說(shuō)到REST,我想大家的第一反應(yīng)就是“啊平匈,就是那種前后臺(tái)通信方式际起。”但是在要求詳細(xì)講述它所提出的各個(gè)約束吐葱,以及如...
    時(shí)待吾閱讀 3,433評(píng)論 0 19
  • error code(錯(cuò)誤代碼)=2000是無(wú)效的像素格式街望。error code(錯(cuò)誤代碼)=2001是指定的驅(qū)動(dòng)...
    Heikki_閱讀 1,811評(píng)論 0 4