請(qǐng)求模式
-
GET
(選擇):從服務(wù)器上獲取一個(gè)具體的資源或者一個(gè)資源列表。 -
POST
(創(chuàng)建): 在服務(wù)器上創(chuàng)建一個(gè)新的資源。 -
PUT
(更新):以整體的方式更新服務(wù)器上的一個(gè)資源轰胁。 -
PATCH
(更新):只更新服務(wù)器上一個(gè)資源的一個(gè)屬性。 -
DELETE
(刪除):刪除服務(wù)器上的一個(gè)資源。 -
HEAD
: 獲取一個(gè)資源的元數(shù)據(jù),如數(shù)據(jù)的哈希值或最后的更新*時(shí)間卖漫。 -
OPTIONS
:獲取客戶(hù)端能對(duì)資源做什么操作的信息。
HTTP響應(yīng)碼
在用戶(hù)發(fā)出請(qǐng)求赠群,服務(wù)端對(duì)請(qǐng)求進(jìn)行響應(yīng)時(shí)羊始,給予正確的HTTP響應(yīng)狀態(tài)碼,有利于讓客戶(hù)端正確區(qū)分遇到的情況查描。
-
200
OK - [GET]:服務(wù)器成功返回用戶(hù)請(qǐng)求的數(shù)據(jù)突委,該操作是冪等的(Idempotent)。 -
201
CREATED - [POST/PUT/PATCH]:用戶(hù)新建或修改數(shù)據(jù)成功冬三。 -
202
Accepted - [*]:表示一個(gè)請(qǐng)求已經(jīng)進(jìn)入后臺(tái)排隊(duì)(異步任務(wù)) -
204
NO CONTENT - [DELETE]:用戶(hù)刪除數(shù)據(jù)成功匀油。 -
400
INVALID REQUEST - [POST/PUT/PATCH]:用戶(hù)發(fā)出的請(qǐng)求有錯(cuò)誤,服務(wù)器沒(méi)有進(jìn)行新建或修改數(shù)據(jù)的操作勾笆,該操作是冪等的敌蚜。 -
401
Unauthorized - [*]:表示用戶(hù)沒(méi)有權(quán)限(令牌、用戶(hù)名匠襟、密碼錯(cuò)誤)钝侠。 -
403
Forbidden - [*] 表示用戶(hù)得到授權(quán)(與401錯(cuò)誤相對(duì))该园,但是訪(fǎng)問(wèn)是被禁止的酸舍。 -
404
NOT FOUND - [*]:用戶(hù)發(fā)出的請(qǐng)求針對(duì)的是不存在的記錄,服務(wù)器沒(méi)有進(jìn)行操作里初,該操作是冪等的啃勉。 -
406
Not Acceptable - [GET]:用戶(hù)請(qǐng)求的格式不可得(比如用戶(hù)請(qǐng)求JSON格式,但是只有XML格式)双妨。 -
410
Gone -[GET]:用戶(hù)請(qǐng)求的資源被永久刪除淮阐,且不會(huì)再得到的叮阅。 -
422
Unprocesable entity - [POST/PUT/PATCH] 當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),發(fā)生一個(gè)驗(yàn)證錯(cuò)誤泣特。 -
500
INTERNAL SERVER ERROR - [*]:服務(wù)器發(fā)生錯(cuò)誤浩姥,用戶(hù)將無(wú)法判斷發(fā)出的請(qǐng)求是否成功。
返回值結(jié)構(gòu)
首先状您,字段的合理返回勒叠,數(shù)據(jù)的包裹。因?yàn)榉祷刂抵懈嗝希覀兂3R獙?duì)數(shù)據(jù)進(jìn)行區(qū)分分組眯分,或者按照從屬關(guān)系打包,所以柒桑,我們?cè)俜祷貢r(shí)弊决,最好有包裹的思想,把數(shù)據(jù)存放在不同的包裹中進(jìn)行返回魁淳。
{
'error_code' : 0,
'data' : {
'user_id' : 1,
'username' : 'xiaomin'
},
'server_time': 14939939
}
上面返回的JSON中飘诗,使用data來(lái)作為數(shù)據(jù)包,將所有數(shù)據(jù)統(tǒng)一以這個(gè)字段進(jìn)行包裹先改。除了data疚察,也可以用list等其他形式的包裹,命名都是自己來(lái)根據(jù)自己的需要確定的仇奶。
{
'error_code' : 0,
'list' : [
{'user_id':1,'username':'xiaoming'},
{'user_id':2,'username':'goudan'}
]
'server_time': 14939939
}
總之貌嫡,不要不分包,直接把所有數(shù)據(jù)和一些你想返回的全局?jǐn)?shù)據(jù)混在一起進(jìn)行返回该溯。
其次岛抄,錯(cuò)誤碼。錯(cuò)誤碼的作用是方便查找錯(cuò)誤原因狈茉,通常情況下夫椭,我喜歡用error_code來(lái)表示,當(dāng)error_code=0時(shí)氯庆,表示沒(méi)有發(fā)生錯(cuò)誤蹭秋,當(dāng)error_code>0時(shí),發(fā)生了錯(cuò)誤堤撵,并且提供較為詳細(xì)的文檔仁讨,告訴客戶(hù)端對(duì)應(yīng)的error_code值所產(chǎn)生的錯(cuò)誤的原因和位置。
最后实昨,空白壓縮和字符轉(zhuǎn)換洞豁。也就是返回的JSON結(jié)果不要換行和空格,用一行返回結(jié)果,使整個(gè)結(jié)果文本容量最小丈挟。同時(shí)刁卜,中文等字符或結(jié)果中有引號(hào),都進(jìn)行字符轉(zhuǎn)換曙咽,防止結(jié)果無(wú)法被正確識(shí)別蛔趴。