錯(cuò)誤處理(Error Handling)

2018-02-24 15:40 更新

錯(cuò)誤處理

處理一個(gè) RESTful API 請(qǐng)求時(shí), 如果有一個(gè)用戶請(qǐng)求錯(cuò)誤或服務(wù)器發(fā)生意外時(shí), 你可以簡(jiǎn)單地拋出一個(gè)異常來(lái)通知用戶出錯(cuò)了。 如果你能找出錯(cuò)誤的原因 (例如,所請(qǐng)求的資源不存在),你應(yīng)該 考慮拋出一個(gè)適當(dāng)?shù)腍TTP狀態(tài)代碼的異常 (例如, yii\web\NotFoundHttpException 意味著一個(gè)404 HTTP狀態(tài)代碼)。 Yii 將通過(guò)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: 資源沒(méi)有被修改??梢允褂镁彺娴陌姹?。
  • 400: 錯(cuò)誤的請(qǐng)求??赡芡ㄟ^(guò)用戶方面的多種原因引起的,例如在請(qǐng)求體內(nèi)有無(wú)效的JSON 數(shù)據(jù),無(wú)效的操作參數(shù),等等。
  • 401: 驗(yàn)證失敗。
  • 403: 已經(jīng)經(jīng)過(guò)身份驗(yàn)證的用戶不允許訪問(wèn)指定的 API 末端。
  • 404: 所請(qǐng)求的資源不存在。
  • 405: 不被允許的方法。 請(qǐng)檢查?Allow?header 允許的HTTP方法。
  • 415: 不支持的媒體類型。 所請(qǐng)求的內(nèi)容類型或版本號(hào)是無(wú)效的。
  • 422: 數(shù)據(jù)驗(yàn)證失敗 (例如,響應(yīng)一個(gè)?POST?請(qǐng)求)。 請(qǐng)檢查響應(yīng)體內(nèi)詳細(xì)的錯(cuò)誤消息。
  • 429: 請(qǐng)求過(guò)多。 由于限速請(qǐng)求被拒絕。
  • 500: 內(nèi)部服務(wù)器錯(cuò)誤。 這可能是由于內(nèi)部程序錯(cuò)誤引起的。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)