RESTful 規(guī)范api接口規(guī)則參考羊初。

整體規(guī)范建議采用RESTful 方式來實(shí)施滨溉。

協(xié)議

API與用戶的通信協(xié)議,總是使用HTTPs協(xié)議长赞,確保交互數(shù)據(jù)的傳輸安全晦攒。

域名

應(yīng)該盡量將API部署在專用域名之下。
https://api.example.com

如果確定API很簡(jiǎn)單得哆,不會(huì)有進(jìn)一步擴(kuò)展脯颜,可以考慮放在主域名下。
https://example.org/api/

api版本控制

應(yīng)該將API的版本號(hào)放入U(xiǎn)RL贩据。
https://api.example.com/v{n}/
另一種做法是栋操,將版本號(hào)放在HTTP頭信息中,但不如放入U(xiǎn)RL方便和直觀饱亮。Github采用這種做法矾芙。

采用多版本并存,增量發(fā)布的方式
v{n} n代表版本號(hào),分為整形和浮點(diǎn)型
整形的版本號(hào): 大功能版本發(fā)布形式近上;具有當(dāng)前版本狀態(tài)下的所有API接口 ,例如:v1,v2
浮點(diǎn)型:為小版本號(hào)剔宪,只具備補(bǔ)充api的功能,其他api都默認(rèn)調(diào)用對(duì)應(yīng)大版本號(hào)的api 例如:v1.1 v2.2

API 路徑規(guī)則

路徑又稱"終點(diǎn)"(endpoint),表示API的具體網(wǎng)址葱绒。
在RESTful架構(gòu)中感帅,每個(gè)網(wǎng)址代表一種資源(resource),所以網(wǎng)址中不能有動(dòng)詞地淀,只能有名詞失球,而且所用的名詞往往與數(shù)據(jù)庫的表格名對(duì)應(yīng)。一般來說帮毁,數(shù)據(jù)庫中的表都是同種記錄的"集合"(collection)她倘,所以API中的名詞也應(yīng)該使用復(fù)數(shù)。
舉例來說作箍,有一個(gè)API提供動(dòng)物園(zoo)的信息,還包括各種動(dòng)物和雇員的信息前硫,則它的路徑應(yīng)該設(shè)計(jì)成下面這樣胞得。

https://api.example.com/v1/products
https://api.example.com/v1/users
https://api.example.com/v1/employees

HTTP請(qǐng)求方式

對(duì)于資源的具體操作類型,由HTTP動(dòng)詞表示屹电。
常用的HTTP動(dòng)詞有下面四個(gè)(括號(hào)里是對(duì)應(yīng)的SQL命令)阶剑。
GET(SELECT):從服務(wù)器取出資源(一項(xiàng)或多項(xiàng))。
POST(CREATE):在服務(wù)器新建一個(gè)資源危号。
PUT(UPDATE):在服務(wù)器更新資源(客戶端提供改變后的完整資源)牧愁。
DELETE(DELETE):從服務(wù)器刪除資源。

下面是一些例子外莲。

GET /product:列出所有商品
POST /product:新建一個(gè)商品
GET /product/ID:獲取某個(gè)指定商品的信息
PUT /product/ID:更新某個(gè)指定商品的信息
DELETE /product/ID:刪除某個(gè)商品
GET /product/ID/purchase :列出某個(gè)指定商品的所有投資者
get /product/ID/purchase/ID:獲取某個(gè)指定商品的指定投資者信息

過濾信息

如果記錄數(shù)量很多猪半,服務(wù)器不可能都將它們返回給用戶。API應(yīng)該提供參數(shù)偷线,過濾返回結(jié)果磨确。

下面是一些常見的參數(shù)。
?limit=10:指定返回記錄的數(shù)量
?offset=10:指定返回記錄的開始位置声邦。
?page=2&per_page=100:指定第幾頁乏奥,以及每頁的記錄數(shù)。
?sortby=name&order=asc:指定返回結(jié)果按照哪個(gè)屬性排序亥曹,以及排序順序邓了。
?producy_type=1:指定篩選條件

API 傳入?yún)?shù)

參入?yún)?shù)分為4種類型:

地址欄參數(shù)

  • restful 地址欄參數(shù) /api/v1/product/122 122為產(chǎn)品編號(hào),獲取產(chǎn)品為122的信息
  • get方式的查詢字串 見過濾信息小節(jié)
    請(qǐng)求body數(shù)據(jù)
    cookie
    request header

cookie和header 一般都是用于OAuth認(rèn)證的2種途徑

返回?cái)?shù)據(jù)

只要api接口成功接到請(qǐng)求媳瞪,就不能返回200以外的HTTP狀態(tài)骗炉。
為了保障前后端的數(shù)據(jù)交互的順暢,建議規(guī)范數(shù)據(jù)的返回材失,并采用固定的數(shù)據(jù)格式封裝痕鳍。

接口返回模板:

{
status:0,
data:{}||[],
msg:’’
}

status: 接口的執(zhí)行的狀態(tài)

=0表示成功
<0 表示有異常=""

Data 接口的主數(shù)據(jù)

,可以根據(jù)實(shí)際返回?cái)?shù)組或JSON對(duì)象

Msg

當(dāng)status!=0 都應(yīng)該有錯(cuò)誤信息

非Restful Api的需求

由于實(shí)際業(yè)務(wù)開展過程中,可能會(huì)出現(xiàn)各種的api不是簡(jiǎn)單的restful 規(guī)范能實(shí)現(xiàn)的笼呆,因此熊响,需要有一些api突破restful規(guī)范原則。特別是移動(dòng)互聯(lián)網(wǎng)的api設(shè)計(jì)诗赌,更需要有一些特定的api來優(yōu)化數(shù)據(jù)請(qǐng)求的交互汗茄。

頁面級(jí)的api

把當(dāng)前頁面中需要用到的所有數(shù)據(jù)通過一個(gè)接口一次性返回全部數(shù)據(jù)

舉例

api/v1/get-home-data 返回首頁用到的所有數(shù)據(jù)

這類API有一個(gè)非常不好的地址,只要業(yè)務(wù)需求變動(dòng)铭若,這個(gè)api就需要跟著變更洪碳。

自定義組合api

把當(dāng)前用戶需要在第一時(shí)間內(nèi)容加載的多個(gè)接口合并成一個(gè)請(qǐng)求發(fā)送到服務(wù)端,服務(wù)端根據(jù)請(qǐng)求內(nèi)容叼屠,一次性把所有數(shù)據(jù)合并返回,相比于頁面級(jí)api瞳腌,具備更高的靈活性,同時(shí)又能很容易的實(shí)現(xiàn)頁面級(jí)的api功能镜雨。

規(guī)范

地址:api/v1/batApi

傳入?yún)?shù):

data:[
{url:'api1',type:'get',data:{...}},
{url:'api2',type:'get',data:{...}},
{url:'api3',type:'get',data:{...}},
{url:'api4',type:'get',data:{...}}
]

返回?cái)?shù)據(jù)

{status:0,msg:'',
data:[
{status:0,msg:'',data:[]},
{status:-1,msg:'',data:{}},
{status:1,msg:'',data:{}},
{status:0,msg:'',data:[]},
]
}

Api共建平臺(tái)

RAP是一個(gè)GUI的WEB接口管理工具嫂侍。在RAP中,您可定義接口的URL荚坞、請(qǐng)求&響應(yīng)細(xì)節(jié)格式等等挑宠。通過分析這些數(shù)據(jù),RAP提供MOCK服務(wù)颓影、測(cè)試服務(wù)等自動(dòng)化工具各淀。RAP同時(shí)提供大量企業(yè)級(jí)功能,幫助企業(yè)和團(tuán)隊(duì)高效的工作诡挂。

什么是RAP?

在前后端分離的開發(fā)模式下碎浇,我們通常需要定義一份接口文檔來規(guī)范接口的具體信息。如一個(gè)請(qǐng)求的地址璃俗、有幾個(gè)參數(shù)南捂、參數(shù)名稱及類型含義等等。RAP 首先方便團(tuán)隊(duì)錄入旧找、查看和管理這些接口文檔溺健,并通過分析結(jié)構(gòu)化的文檔數(shù)據(jù),重復(fù)利用并生成自測(cè)數(shù)據(jù)钮蛛、提供自測(cè)控制臺(tái)等等... 大幅度提升開發(fā)效率鞭缭。

RAP的特色

強(qiáng)大的GUI工具 給力的用戶體驗(yàn),你將會(huì)愛上使用RAP來管理您的API文檔魏颓。
完善的MOCK服務(wù) 文檔定義好的瞬間岭辣,所有接口已經(jīng)準(zhǔn)備就緒。有了MockJS甸饱,無論您的業(yè)務(wù)模型有多復(fù)雜沦童,它都能很好的滿足仑濒。
龐大的用戶群 RAP在阿里巴巴有200多個(gè)大型項(xiàng)目在使用,也有許多著名的公司偷遗、開源人士在使用墩瞳。RAP跟隨這些業(yè)務(wù)的成行而成長(zhǎng),專注細(xì)節(jié)氏豌,把握質(zhì)量喉酌,經(jīng)得住考驗(yàn)。
免費(fèi) + 專業(yè)的技術(shù)支持 RAP是免費(fèi)的泵喘,而且你的技術(shù)咨詢都將在24小時(shí)內(nèi)得到答復(fù)泪电。大多數(shù)情況,在1小時(shí)內(nèi)會(huì)得到答復(fù)纪铺。
RAP是一個(gè)可視化接口管理工具 通過分析接口結(jié)構(gòu)相速,動(dòng)態(tài)生成模擬數(shù)據(jù),校驗(yàn)真實(shí)接口正確性鲜锚, 圍繞接口定義和蚪,通過一系列自動(dòng)化工具提升我們的協(xié)作效率。我們的口號(hào):提高效率烹棉,回家吃晚飯!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末怯疤,一起剝皮案震驚了整個(gè)濱河市浆洗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌集峦,老刑警劉巖伏社,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異塔淤,居然都是意外死亡摘昌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門高蜂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來聪黎,“玉大人,你說我怎么就攤上這事备恤「迨危” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵露泊,是天一觀的道長(zhǎng)喉镰。 經(jīng)常有香客問我,道長(zhǎng)惭笑,這世上最難降的妖魔是什么侣姆? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任生真,我火速辦了婚禮,結(jié)果婚禮上捺宗,老公的妹妹穿的比我還像新娘柱蟀。我一直安慰自己,他們只是感情好偿凭,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布产弹。 她就那樣靜靜地躺著,像睡著了一般弯囊。 火紅的嫁衣襯著肌膚如雪痰哨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天匾嘱,我揣著相機(jī)與錄音斤斧,去河邊找鬼。 笑死霎烙,一個(gè)胖子當(dāng)著我的面吹牛撬讽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播悬垃,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼游昼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了尝蠕?” 一聲冷哼從身側(cè)響起烘豌,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎看彼,沒想到半個(gè)月后廊佩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡靖榕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年标锄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茁计。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡料皇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出星压,到底是詐尸還是另有隱情瓶蝴,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布租幕,位于F島的核電站舷手,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏劲绪。R本人自食惡果不足惜男窟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一盆赤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧歉眷,春花似錦牺六、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扇住,卻和暖如春春缕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背艘蹋。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工锄贼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人女阀。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓宅荤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親浸策。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冯键,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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

  • 秋雨撒過九月的重慶,濕潤(rùn)與清爽庸汗。 一天的辛苦惫确,一頓精簡(jiǎn)的晚餐,微撐夫晌。在重慶的街頭走一走,那山昧诱,那云晓淀,那街,那景盏档,那...
    渝名閱讀 404評(píng)論 5 4
  • 何為4C能力凶掰? 常常聽身邊的朋友說:少年強(qiáng),則家族強(qiáng)蜈亩,少年強(qiáng)懦窘,則中國強(qiáng)! 是的稚配,孩子是國家的未來畅涂,希望,同時(shí)也是世...
    雨樺_愛一切美好閱讀 1,772評(píng)論 0 0
  • 過程比較簡(jiǎn)單道川,記錄一下發(fā)布的流程午衰,方便后續(xù)查閱 1.注冊(cè)登錄就不多說了JCenter地址2.新建一個(gè)項(xiàng)目Gradl...
    Andy周閱讀 600評(píng)論 0 0
  • 我是去年知道簡(jiǎn)書這個(gè)軟件的臊岸,那時(shí)在我姐姐的公眾號(hào)里橙数,她隔幾天文里就提到簡(jiǎn)書,簡(jiǎn)友帅戒,還鼓勵(lì)我來簡(jiǎn)書寫灯帮,好奇心驅(qū)使下,...
    齊梅齊閱讀 1,505評(píng)論 31 57