API返回結(jié)果的參考規(guī)范

{
    data : { // 請求數(shù)據(jù),對象或數(shù)組均可
        user_id: 123,
        user_name: "tutuge",
        user_avatar_url: "http://tutuge.me/avatar.jpg"
        ...
    },
    msg : "done", // 請求狀態(tài)描述,調(diào)試用
    code: 1001, // 業(yè)務(wù)自定義狀態(tài)碼,如Http status 200但是用戶未登錄這樣的業(yè)務(wù)代碼。
    extra : { // 全局附加數(shù)據(jù),字段、內(nèi)容不定(如等級,經(jīng)驗(yàn)的變化,可以作為全局的數(shù)據(jù)存在,區(qū)別于某次請求的具體data)
        type: 1,
        desc: "簽到成功!"
    }
}

其中,code的定義要有一套規(guī)范,如:

// Code 業(yè)務(wù)自定義狀態(tài)碼定義示例
// 授權(quán)相關(guān)
1001: 無權(quán)限訪問
1002: access_token過期
1003: unique_token無效
...
// 用戶相關(guān)
2001: 未登錄
2002: 用戶信息錯(cuò)誤
2003: 用戶不存在
// 業(yè)務(wù)1
3001: 業(yè)務(wù)1XXX
3002: 業(yè)務(wù)1XXX
// ...

實(shí)踐經(jīng)驗(yàn)

命名風(fēng)格統(tǒng)一

不管是駝峰式還是下劃線式,統(tǒng)一就好。當(dāng)然,按照目前的“大眾規(guī)范”,還是統(tǒng)一小寫加下劃線比較好。
如:user_iduser_name,user_age等。

語義清晰,遵守常用縮寫

字段的名字最好能體現(xiàn)字段的類型,遵守一些“常用”的縮寫,如:

// 字符串
user_name, task_desc, date_str, article_title, feed_content 等

// 數(shù)字
user_id, users_count, task_num, xxx_offset 等

// 日期

login_at, create_date, logout_time 等

// 布爾

is_done, is_vip, protected, can_read 等

// URL

user_avatar_url, thumb_url 等

// 數(shù)組

users, profiles, thumb_imgs 等

空值、空字段的處理

除了布爾類型的,其余的空值統(tǒng)一用null表示,客戶端保證每種字段的null可以被正常處理。

給不同類型設(shè)置默認(rèn)空值

除了null,還可以對字段設(shè)置“默認(rèn)值”,如數(shù)字就是0,字符串就是空字符串"",數(shù)組就是空數(shù)組[],對象就是空對象{},這樣有個(gè)好處就是可以避免很多客戶端(Java、OC)處理空值(Null、nil、null)產(chǎn)生的異常。但是危害就是容易語義不明。還是要根據(jù)具體業(yè)務(wù)、前后端約定而定。

參考用Runtime的手段填充任意NSObject對象的nil屬性,其實(shí)就是為對象空值統(tǒng)一設(shè)置默認(rèn)值的。

布爾boolean值的處理

各種布爾值表示方式,如:

is_login:  true,

is_login:  "true",

is_login:  1

is_login:  "TRUE"

is_login:  "YES"

由于語言本身的限制、框架的處理方式,不對布爾類型的值做限制總覺得不踏實(shí),像C、C++、Objective-C里面的布爾就是數(shù)字0和1,其它語言也都各自不一樣,還有從數(shù)據(jù)庫讀寫導(dǎo)致的布爾值類型不一致等。

所以,如果可以的話,最好一開始就對所有請求參數(shù)、結(jié)果的布爾值類型做限定,比如統(tǒng)一成數(shù)字0和1最好。

參考文章:
API返回結(jié)果設(shè)計(jì)經(jīng)驗(yàn)與總結(jié)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容