摘錄自:https://www.cnblogs.com/cgzl/p/9047626.html
狀態碼是非常重要的,因為只有狀態碼會告訴API的消費者:
- 請求是否如預期的成功,或者失敗
- 如果出現了錯誤,誰該為這個錯誤負責
列舉一下web API會用到的狀態碼:
200級別,表示成功:
- 200 - OK
- 201 - Created,表示資源創建成功了
- 204 - No content,成功執行,但是不應該返回任何東西
400級別,表示客戶端引起的錯誤:
- 400 - Bad request,表示API的消費者發送到服務器的請求是錯誤的
- 401 - Unauthorized,表示沒有權限
- 403 - Forbidden,表示用戶驗證成功,但是該用戶仍然無法訪問該資源
- 404 - Not found,表示請求的資源不存在
- 405 - Method not allowed,這就是當我們嘗試發送請求給某個資源時,使用的HTTP方法卻是不允許的,例如使用POST api/countries, 而該資源只實現了 GET,所以POST不被允許
- 406 - Not acceptable,這里涉及到了media type,例如API消費者請求的是application/xml格式的media type,而API只支持application/json
- 409 - Conflict,表示該請求無法完成,因為請求與當前資源的狀態有沖突,例如你編輯某個資源數據以后,該資源又被其它人更新了,這時你再PUT你的數據就會出現409錯誤;有時也用在嘗試創建資源時該資源已存在的情況。
- 415 - Unsupported media type,這個和406正好返回來,比如說我向服務器提交數據的media type是xml的,而服務器只支持json,那么就會返回415
- 422 - Unprocessable entity,表示請求的格式沒問題,但是語義有錯誤,例如實體驗證錯誤。
500級別,服務器錯誤:
- 500 - Internal server error,這表示是服務器發生了錯誤
默認情況下 JsonResult會返回200 OK狀態碼,可以去修改JsonResult以支持其它的狀態碼。但是Controller里提供了一些幫助方法返回IActionResult並指定特定的狀態碼,針對200,就是Ok()方法
針對單個資源,如果沒有找到,就需要返回404 Not Found,這時就可以使用Controller的幫助方法 NotFound().