?
? ????? PHP ??? ???? ??? ?? ??
處理一個(gè) RESTful API 請(qǐng)求時(shí), 如果有一個(gè)用戶請(qǐng)求錯(cuò)誤或服務(wù)器發(fā)生意外時(shí), 你可以簡(jiǎn)單地拋出一個(gè)異常來通知用戶出錯(cuò)了。 如果你能找出錯(cuò)誤的原因 (例如,所請(qǐng)求的資源不存在),你應(yīng)該 考慮拋出一個(gè)適當(dāng)?shù)腍TTP狀態(tài)代碼的異常 (例如, yii\web\NotFoundHttpException 意味著一個(gè)404 HTTP狀態(tài)代碼)。 Yii 將通過HTTP狀態(tài)碼和文本 發(fā)送相應(yīng)的響應(yīng)。 它還將包括在響應(yīng)主體異常的 序列化表示形式。 例如,
HTTP/1.1 404 Not Found
Date: Sun, 02 Mar 2014 05:31:43 GMT
Server: Apache/2.2.26 (Unix) DAV/2 PHP/5.4.20 mod_ssl/2.2.26 OpenSSL/0.9.8y
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8
{
"type": "yii\\web\\NotFoundHttpException",
"name": "Not Found Exception",
"message": "The requested resource was not found.",
"code": 0,
"status": 404
}
下面的列表總結(jié)了Yii的REST框架的HTTP狀態(tài)代碼:
200
: OK。一切正常。201
: 響應(yīng)?POST
?請(qǐng)求時(shí)成功創(chuàng)建一個(gè)資源。Location
?header 包含的URL指向新創(chuàng)建的資源。204
: 該請(qǐng)求被成功處理,響應(yīng)不包含正文內(nèi)容 (類似?DELETE
?請(qǐng)求)。304
: 資源沒有被修改??梢允褂镁彺娴陌姹尽?/li>
400
: 錯(cuò)誤的請(qǐng)求??赡芡ㄟ^用戶方面的多種原因引起的,例如在請(qǐng)求體內(nèi)有無效的JSON 數(shù)據(jù),無效的操作參數(shù),等等。401
: 驗(yàn)證失敗。403
: 已經(jīng)經(jīng)過身份驗(yàn)證的用戶不允許訪問指定的 API 末端。404
: 所請(qǐng)求的資源不存在。405
: 不被允許的方法。 請(qǐng)檢查?Allow
?header 允許的HTTP方法。415
: 不支持的媒體類型。 所請(qǐng)求的內(nèi)容類型或版本號(hào)是無效的。422
: 數(shù)據(jù)驗(yàn)證失敗 (例如,響應(yīng)一個(gè)?POST
?請(qǐng)求)。 請(qǐng)檢查響應(yīng)體內(nèi)詳細(xì)的錯(cuò)誤消息。429
: 請(qǐng)求過多。 由于限速請(qǐng)求被拒絕。500
: 內(nèi)部服務(wù)器錯(cuò)誤。 這可能是由于內(nèi)部程序錯(cuò)誤引起的。