\1. 【強(qiáng)制】前后端交互的 API,需要明確協(xié)議、域名、路徑、請求方法、請求內(nèi)容、狀態(tài)碼、響應(yīng)體。
\2. 【強(qiáng)制】前后端數(shù)據(jù)列表相關(guān)的接口返回,如果為空,則返回空數(shù)組[]或空集合 {}
。
null
判斷。
\3. 【強(qiáng)制】服務(wù)端發(fā)生錯(cuò)誤時(shí),返回給前端的響應(yīng)信息必須包含 HTTP 狀態(tài)碼,errorCode
、errorMessage
、用戶提示信息四個(gè)部分。
errorCode
:參考附表 3。errorMessage
:簡要描述后端出錯(cuò)原因,便于錯(cuò)誤排查人員快速定位問題,注意不要包含敏感數(shù)據(jù)信息。200 OK
: 表明該請求被成功地完成,所請求的資源發(fā)送到客戶端。
2) 401 Unauthorized
: 請求要求身份驗(yàn)證,常見對于需要登錄而用戶未登錄的情況。
3) 403 Forbidden
:服務(wù)器拒絕請求,常見于機(jī)密信息或復(fù)制其它登錄用戶鏈接訪問服務(wù)器的情況。
4) 404 Not Found
: 服務(wù)器無法取得所請求的網(wǎng)頁,請求資源不存在。
5) 500 Internal Server Error
: 服務(wù)器內(nèi)部錯(cuò)誤。
\4. 【強(qiáng)制】在前后端交互的 JSON 格式數(shù)據(jù)中,所有的 key
必須為小寫字母開始的 lowerCamelCase
風(fēng)格,符合英文表達(dá)習(xí)慣,且表意完整。
errorCode
/ errorMessage
/ assetStatus
/ menuList
/ orderList
/ configFlag
ERRORCODE
/ ERROR_CODE
/ error_message
/ error-message
/ errormessage
/ ErrorMessage
/ msg
\5. 【強(qiáng)制】errorMessage
是前后端錯(cuò)誤追蹤機(jī)制的體現(xiàn),可以在前端輸出到 type="hidden"
文字類控件中,或者用戶端的日志中,幫助我們快速地定位出問題。
\6. 【強(qiáng)制】對于需要使用超大整數(shù)的場景,服務(wù)端一律使用 String
字符串類型返回,禁止使用 Long
類型。
Long
整型數(shù)據(jù)給前端,JS 會自動轉(zhuǎn)換為 Number
類型(注:此類型為雙精度浮點(diǎn)數(shù),表示原理與取值范圍等同于 Java 中的 Double
)。Long
類型能表示的最大值是 2 的 63 次方-1,在取值范圍之內(nèi),超過 2 的 53 次方 (9007199254740992)的數(shù)值轉(zhuǎn)化為 JS 的 Number
時(shí),有些數(shù)值會有精度損失。擴(kuò)展說明,在 Long 取值范圍內(nèi),任何 2 的指數(shù)次整數(shù)都是絕對不會存在精度損失的,所以說精度損失是一個(gè)概率問題。若浮點(diǎn)數(shù)尾數(shù)位與指數(shù)位空間不限,則可以精確表示任何整數(shù),但很不幸,雙精度浮點(diǎn)數(shù)的尾數(shù)位只有 52 位。\7. 【強(qiáng)制】HTTP 請求通過 URL 傳遞參數(shù)時(shí),不能超過 2048 字節(jié)。
\8. 【強(qiáng)制】HTTP 請求通過 body 傳遞內(nèi)容時(shí),必須控制長度,超出最大長度后,后端解析會出錯(cuò)。
nginx
默認(rèn)限制是 1MB,tomcat
默認(rèn)限制為 2MB,當(dāng)確實(shí)有業(yè)務(wù)需要傳較大內(nèi)容時(shí),可以通過調(diào)大服務(wù)器端的限制。\9. 【強(qiáng)制】在翻頁場景中,用戶輸入?yún)?shù)的小于 1,則前端返回第一頁參數(shù)給后端;后端發(fā)現(xiàn)用戶輸入的參數(shù)大于總頁數(shù),直接返回最后一頁。
\10. 【強(qiáng)制】服務(wù)器內(nèi)部重定向必須使用 forward
;外部重定向地址必須使用 URL 統(tǒng)一代理模塊生成,否則會因線上采用 HTTPS 協(xié)議而導(dǎo)致瀏覽器提示“不安全”,并且還會帶來 URL 維護(hù)不一致的問題。
\11. 【推薦】服務(wù)器返回信息必須被標(biāo)記是否可以緩存,如果緩存,客戶端可能會重用之前的請求結(jié)果。
http 1.1
中,s-maxage
告訴服務(wù)器進(jìn)行緩存,時(shí)間單位為秒,用法如下,response.setHeader("Cache-Control", "s-maxage=" + cacheSeconds);
\12. 【推薦】服務(wù)端返回的數(shù)據(jù),使用 JSON 格式而非 XML。
說明:盡管 HTTP 支持使用不同的輸出格式,例如純文本,JSON,CSV,XML,RSS 甚至 HTML。如果我們使用的面向用戶的服務(wù),應(yīng)該選擇 JSON 作為通信中使用的標(biāo)準(zhǔn)數(shù)據(jù)交換格式,包括請求和響應(yīng)。此外,application/JSON
是一種通用的 MIME 類型,具有實(shí)用、精簡、易讀的特點(diǎn)。
\13. 【推薦】前后端的時(shí)間格式統(tǒng)一為"yyyy-MM-dd HH:mm:ss
",統(tǒng)一為 GMT。
14.【參考】在接口路徑中不要加入版本號,版本控制在 HTTP 頭信息中體現(xiàn),有利于向前兼容。
更多建議: