API接口設(shè)計(jì)需要注意的那些事兒
隨著前后端的分離,API接口變得越來越重要,作為前后端通信的接口,API 變得非常重要,而且它的設(shè)計(jì)也是非常難以掌握。不僅要考慮安全性,還要考慮可維護(hù)性,以及今后的升級(jí)等等。
如何才能設(shè)計(jì)出更好的API接口,我認(rèn)為以下幾點(diǎn)需要注意。
接口一致性
這里說的一致性指的是編碼規(guī)范要統(tǒng)一,不能各個(gè)接口使用不一樣的編碼風(fēng)格。對(duì)于返回格式的處理也是一樣,要統(tǒng)一返回格式,返回碼也要統(tǒng)一,對(duì)于403,404的處理要保持一致。
授權(quán)認(rèn)證
大部分接口都是需要授權(quán)認(rèn)證的,因此我們需要對(duì)接口的授權(quán)認(rèn)證進(jìn)行判斷,這樣可以過濾掉大部分的非法訪問。
接口健康性檢查
我們應(yīng)該設(shè)計(jì)一個(gè)監(jiān)控系統(tǒng)或者一個(gè)接口來實(shí)時(shí)監(jiān)控我們的服務(wù),如果接口出現(xiàn)了問題,我們應(yīng)該能夠第一時(shí)間發(fā)現(xiàn),同樣,對(duì)于每個(gè)接口的訪問請(qǐng)求我們都要有日志記錄的存儲(chǔ)。
版本管理
無論是小程序,還是app,還是網(wǎng)站,我們都是需要版本升級(jí)的,而提前設(shè)計(jì)好版本,可以避免因?yàn)樯?jí)導(dǎo)致舊的服務(wù)無法正常工作,我們要保證在升級(jí)的時(shí)候,新舊版本的服務(wù)都能正常運(yùn)轉(zhuǎn)。
參數(shù)接收判斷
對(duì)于接口參數(shù)的個(gè)數(shù),參數(shù)的類型,我們都要進(jìn)行判斷處理,對(duì)于一些非法字段,我們要及時(shí)發(fā)現(xiàn)并處理,總之,用戶傳送的信息,我們總要保持懷疑態(tài)度去處理它。
盡量采用restful風(fēng)格
雖然restful風(fēng)格被一些人質(zhì)疑,但是目前來看,它還是最好的接口設(shè)計(jì)風(fēng)格,通過采用restful風(fēng)格,可以讓接口語(yǔ)義更加明確 ,規(guī)范,優(yōu)雅省去了大部分 無意義的溝通,通過使用不同的http狀態(tài)碼,可以非常清楚地幫助用戶理解接口的返回情況。
提供完整詳細(xì)的API文檔
無論我們的接口設(shè)計(jì)得多么規(guī)范,多么易懂,我們都需要提供一份完整的api文檔,同時(shí)我們還需要提供一些請(qǐng)求范例,這樣用戶在使用的時(shí)候才會(huì)更加清楚,也能避免一些錯(cuò)誤的請(qǐng)求。
錯(cuò)誤返回要明確
對(duì)于錯(cuò)誤信息返回的時(shí)候盡量要明確,是程序問題,還是查找問題,還是參數(shù)問題,或者其他原因,給出明確具體的錯(cuò)誤原因,非常方便我們對(duì)問題的處理。
統(tǒng)一設(shè)計(jì)分頁(yè)
對(duì)于資源的請(qǐng)求都采用分頁(yè)返回,一方面減少了資源的返回,一方面減少了服務(wù)器的開銷。
做好限流控制
你永遠(yuǎn)不知道你的用戶會(huì)怎樣使用你的接口,可能它會(huì)因?yàn)殄e(cuò)誤地返回結(jié)果而不停地重試接口,我們要能夠?qū)︻l繁請(qǐng)求進(jìn)行限制。