掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
在設(shè)計接口時,必須明確接口的職責,即接口類型,接口應(yīng)解決什么業(yè)務(wù)問題等。

員工經(jīng)過長期磨合與沉淀,具備了協(xié)作精神,得以通過團隊的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。創(chuàng)新互聯(lián)建站堅持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因為“專注所以專業(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡單”。公司專注于為企業(yè)提供做網(wǎng)站、網(wǎng)站制作、微信公眾號開發(fā)、電商網(wǎng)站開發(fā),小程序設(shè)計,軟件定制網(wǎng)站建設(shè)等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。
在明確接口職責的條件下,盡量做到接口單一,即一個接口只做一件事,而非兩件以上。很多非資深接口設(shè)計者,在設(shè)計接口時,總認為接口所做的事越多,越牛叉,這是非常嚴重的錯誤認識。
在設(shè)計接口時,應(yīng)明確接口協(xié)議,是采用HTTP協(xié)議,HTTPS協(xié)議還是FTP協(xié)議,要根據(jù)具體情況來定。
FTP協(xié)議(File Transfer Protocol,簡稱FTP),是一套標準的文件傳輸協(xié)議,用于傳輸文件,如.txt,.csv等,一般文件傳輸,采用FTP協(xié)議。
HTTP協(xié)議,適用一般對安全性要求比較低或沒要求的業(yè)務(wù)情景。
HTTPS=HTTP+SSL,適用于對安全性要求較高的業(yè)務(wù)情景。
由于api獲取的是一種資源,所以網(wǎng)址中盡量為名詞,而非動詞。
/api/v1.0/pruduct/2019
/api/v1.0/users/2019
接口基本訪問協(xié)議:get(獲取),post(新增),put(修改)和delete(刪除)。
一般地,域名分為主域名和專有域名,主域名適合api長期不變或變化較少的業(yè)務(wù),專有域名是解決具體的專有業(yè)務(wù)的。
以百度舉例:
(1)主域名:www.baidu.com
(2)產(chǎn)品服務(wù)類
(3)市場活動類
在明確域名的情況下,一定要考慮接口是否跨域,以及跨域應(yīng)采用的技術(shù)手段等。
對于接口的url,應(yīng)加版本號http://api.demo.com/vcgmsgsi/,如 ,其中d表示版本號,如v1.0,v2.0。
例子:獲取產(chǎn)品號為2019,版本號為v1.0的版本號的產(chǎn)品信息。
/api/v1.0/Pruducts/2019
當記錄數(shù)比較多時(如 SELECT * FROM TBName),因適當添加一些條件對數(shù)據(jù)進行過濾,如TOP,分頁,分組,排序和WHERE條件等。
下面是一些常見的參數(shù)。
返回數(shù)據(jù)格式,一般包括三個字段:
(1)失敗情況(狀態(tài)碼、錯誤碼和錯誤描述)。
{
“status”:0,//狀態(tài)碼 0-表示失敗,1-表示成功
“error_code”:”2003”,//錯誤碼,一般在設(shè)計時定義
“error_des”:”身份驗證失敗”//錯誤描述,一般在設(shè)計時定義
}(2)成功情況(標識id,數(shù)據(jù)對象,狀態(tài)碼)。
”sid“:”sh20190111”,//token id
”users“:{
”id“:”al201901111341”,//用戶id
“name”:”Alan_beijing”,//用戶名
“addr”:”用戶地址”
},
“status”:1//狀態(tài)碼 0-表示失敗,1-表示成功
}
接口暴露的考慮,接口并發(fā)量的考慮,接口防攻擊的考慮,接口跨域的考慮等。
在設(shè)計接口時,充分考慮接口的可擴展性。
任何api,從權(quán)限上,可歸結(jié)為匿名api和非匿名api,前者不需要驗證,后者需要驗證
在api設(shè)計時,要定好api返回碼,如:
存在這樣一種業(yè)務(wù)場景:某個接口需要返回多個api接口組合的結(jié)果 ,在類似的業(yè)務(wù)場景下,所設(shè)計的接口,具有一定的反規(guī)范性。
data:[
{url:'api1',type:'get',data:{...}},
{url:'api2',type:'get',data:{...}},
]
{
status:0,
msg:'',
data:[
{status:1,msg:'',data:[]},
{status:1,msg:'',data:{}}
]
}
假設(shè)存在這樣一個一個業(yè)務(wù):一個ERP系統(tǒng),需要提供兩個接口,一個是用戶訪問接口(需要驗證),另一個是用戶注冊接口(不需要驗證)。
根據(jù)本篇文章一,二部分的建議,我們來設(shè)計滿足該業(yè)務(wù)需求的接口。
1.定義統(tǒng)一輸入?yún)?shù)
2.定義統(tǒng)一輸出參數(shù)
3.定義統(tǒng)一錯誤碼
如下為定義接口授權(quán)類別
1.用戶注冊
2.Request
3.Responce
4.code示例?
Request:
{
"mobile":13636595499,
"verify_code":"987654",
"pwd":"123456"
}
Responce:
(1)error
{
"status":0,
"error_code":1001,
"error_desc":"手機驗證碼已失效"
}
(2)succed
{
"sid":"sh201901141529",
"uid":1,
"status":1
}
1.登錄接口概述
2.Request
3.Responce
4.Code
Responce:
1.error
{
"status":0,
"error_code":1002,
"error_desc":"密碼錯誤"
}
2.succeed
{
"sid":"sh201901141529",
"user":{
"id":1,
"username":"",
age:0,
gender:0
},
"status":1
}
作者:Alan_beijing
www.cnblogs.com/wangjiming

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流