摘录自: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().
|
请发表评论