restful接口規(guī)范:就是為了采用不同的后臺(tái)語(yǔ)言,也能使用同樣的接口獲取到同樣的數(shù)據(jù)
1、接口詳情:
接口url地址?
接口說(shuō)明
2、method請(qǐng)求方式:get、post、delete、put、update等
3、請(qǐng)求參數(shù)和返回參數(shù):(請(qǐng)求參數(shù)和返回參數(shù)都分為:字段、說(shuō)明、類型、數(shù)據(jù)格式、是否必填這5列)
字段:屬性名
說(shuō)明:中文釋義
類型:屬性的類型,只有Undefined、Null、Boolean、String、Number、Object、Array
是否必填:是/否
數(shù)據(jù)格式:【默認(rèn)JSON】
請(qǐng)求參數(shù):
分為4種類型:
1)、cookie:? ? ? ? 一般用于OAuth認(rèn)證
2)、request header: 一般用于OAuth認(rèn)證
3)、請(qǐng)求body數(shù)據(jù):
4)、地址欄參數(shù):
2 restful 地址欄參數(shù) /v1/products/ID ID為產(chǎn)品編號(hào),獲取產(chǎn)品編號(hào)為ID的信息
2 get方式的查詢字段 /v1/products?sortBy=name&order=asc? 指定返回結(jié)果按照哪個(gè)屬性排序,以及排序順序。
返回參數(shù),要分兩種情況討論,接口調(diào)用成功或者失?。?/p>
code:數(shù)據(jù)狀態(tài)碼(一般都是前后臺(tái)約定規(guī)則)
常用的code碼建議:
200:請(qǐng)求成功
204:請(qǐng)求失敗
400:請(qǐng)求報(bào)文存在語(yǔ)法錯(cuò)誤? ?
500:服務(wù)器錯(cuò)誤?
502:網(wǎng)關(guān)出錯(cuò)?
503:服務(wù)器不可用
504:請(qǐng)求超時(shí)
401:沒(méi)有權(quán)限
403:表示對(duì)請(qǐng)求資源的訪問(wèn)被服務(wù)器拒絕
404:找不到請(qǐng)求的資源
mesage/msg:數(shù)據(jù)狀態(tài)信息(一般不僅僅是對(duì)數(shù)據(jù)狀態(tài)碼的解釋,更多是對(duì)結(jié)果的描述,給前臺(tái)開(kāi)發(fā)者閱讀的)
data:數(shù)據(jù)結(jié)果(JSON類型的數(shù)據(jù)結(jié)構(gòu))
結(jié)構(gòu)示例:
data: {
? ? ? code: 200,? ? ? ? ? ? ? ? ? ? ? ? ? // 操作成果
? ? ? data: {} || [],? ? ? ? ? ? ? ? ? ? ? // 數(shù)據(jù)
? ? ? message: '請(qǐng)求成果的類似提示語(yǔ)',? ? ? // 存放響應(yīng)信息提示【須語(yǔ)義化中文提示】
},
data: {
? ? ? code: 204,? ? ? ? ? ? ? ? ? ? // 操作失敗,例如單純的就是接口調(diào)用錯(cuò)誤
? ? ? data: {} || [],? ? ? ? ? ? ? ? // 數(shù)據(jù)
? ? ? message: '請(qǐng)求失敗的原因',? ? ? // 存放響應(yīng)信息提示【須語(yǔ)義化中文提示】
},
4、一致性原則:
1)、前端需要哪些字段,API接口應(yīng)該返回哪些字段,字段不多也不少。
2)、更新功能盡量做到:初次返回的原始數(shù)據(jù)參數(shù)與提交更新的數(shù)據(jù)參數(shù)結(jié)構(gòu)一致。
3)、時(shí)間參數(shù),盡量以一致格式的字符串傳遞, 如:
? ‘2019-01’? ? ? ? ? ? ? ? |? ? ? ‘2019/01’
? ‘2019-01-01’? ? ? ? ? ? |? ? ? ‘2019/01/01’
? ‘2019-01-01 12:12:12’? ? |? ? ? ‘2019/01/01 12:12:12’
開(kāi)發(fā)中應(yīng)注意的問(wèn)題:
1.接口文檔在開(kāi)發(fā)的哪個(gè)階段出來(lái):這點(diǎn)是開(kāi)發(fā)效率的主要限制因素。
直接導(dǎo)致的問(wèn)題是開(kāi)發(fā)前期前端只能做靜態(tài)頁(yè)面,中期一直在等后端出文檔,如果寫(xiě)完接口才出文檔,導(dǎo)致快到提測(cè)時(shí)間節(jié)點(diǎn)上是前端最忙的時(shí)候要敲后續(xù)的處理數(shù)據(jù)相關(guān)的代碼,因?yàn)闀r(shí)間比較緊所以先把大概功能處理完就提測(cè),導(dǎo)致測(cè)試人員反應(yīng)前端不細(xì)心,細(xì)節(jié)問(wèn)題一大堆。
2.字段問(wèn)綁定的bug:后端出接口文檔時(shí)每個(gè)字段要加字段解釋,避免出現(xiàn)前端字段理解不到位而出現(xiàn)字段邦定問(wèn)題的bug。
3.聯(lián)調(diào)時(shí),前端調(diào)用后端接口,發(fā)現(xiàn)接口有問(wèn)題,前端可以提供出錯(cuò)接口調(diào)用時(shí)傳參的字段,但接口具體問(wèn)題后端應(yīng)自己解決。
4.數(shù)據(jù)處理問(wèn)題:考慮到瀏覽器的處理能力、帶寬限制、安全性因素,數(shù)據(jù)復(fù)雜的處理應(yīng)后端處理,不能前端能做就給前端,數(shù)據(jù)處理邏輯都是一樣的,后端本來(lái)就是處理數(shù)據(jù)的,后端返回的字段太多或不夠,也會(huì)影響聯(lián)調(diào)的進(jìn)度。