HTTP 状态码

2019-12-28  本文已影响0人  独木舟的木

快速预览

200 Ok - [GET]:服务器成功返回用户请求的数据,该操作是幂等的。
201 Created - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
204 No Content - [DELETE]:用户删除数据成功。

400 Invalid Request - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 Not Found - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
409 Conflict - 通用冲突
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。表示资源在终端不再可用。
415 Unsupported Media Type (不支持的媒体类型) - 如果请求中包含了不正确的内容类型
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
429 Too Many Requests (请求过多) - 当请求由于访问速率限制而被拒绝时

/**
* 在接口处理发生错误的时候,如果是客户端请求参数导致的错误,返回 4xx 状态码,
* 如果是服务端自身的处理逻辑错误,返回 5xx 状态码。
* 所有的异常对象都是对这个异常状态的描述,其中 error 字段是错误的描述,detail 字段(可选)是导致错误的详细原因。
*/
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功
503 Server Unavaliable - 服务端当前无法处理请求
533 INTERNAL SERVER ERROR - [*]:keystore 不存在
534 INTERNAL SERVER ERROR - [*]:keystore 已过期

HTTP 状态码

HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。

状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。

图片来自《图解 HTTP》

状态码如 200 OK,以 3 位数字和原因短语组成。数字中的第一位指定了响应类别,后两位无分类。响应类别有以下 5 种:

状态码的类别 类别 原因短语
1xx Informational(信息性状态码) 接收的请求正在处理
2xx Success(成功状态码) 请求正常处理完毕
3xx Redirection(重定向状态码) 需要进行附加操作以完成请求
4xx Client Error(客户端错误状态码) 服务器无法处理请求
5xx Server Error(服务器错误状态码) 服务器处理请求出错

注:只要遵守状态码类别的定义,即使改变 RFC2616 中定义的状态码, 或服务器端自行创建状态码都没问题。

1xx 消息

1xx 范围的状态码是保留给底层 HTTP 功能使用的,估计在你的职业生涯里面也用不着手动发送这样一个状态码出来。

Status Code Description
100 continue
101 switching protocols
102 processing

2xx 成功

2xx 范围的状态码是保留给成功消息使用的,你应该尽可能地确保服务器总是发送这些状态码给用户。

Status Code Description
200 ok,GET 请求成功
201 created,POST 请求已经被实现
202 accepted
203 non-authoritative information
204 no content,成功处理请求,没有返回任何内容。
205 reset content
206 partial content,成功处理了范围请求
207 multi-status
208 already reported
226 im used

3xx 重定向

3xx 范围的状态码是保留给重定向用的。大多数的 API 不会太常使用这类状态码,但是在新的超媒体样式的 API 中会使用更多一些。

Status Code Description
300 multiple choices
301 moved permanently,永久性重定向
302 found,临时性重定向
303 see other,该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源。
304 not modified,资源已找到,但未符合条件请求
305 use proxy
307 temporary redirect ,临时性重定向
308 permanent redirect

4xx 客户端错误

4xx 范围的状态码是保留给客户端错误用的。例如,客户端提供了一些错误的数据或请求了不存在的内容。这些请求应该是幂等的,不会改变任何服务器的状态。

Status Code Description
400 bad request,请求错误
401 unauthorized,身份验证失败,或者未提供身份验证信息
402 payment required
403 forbidden,对请求资源的访问被服务器拒绝了
404 not found,服务器上无法找到请求的资源
405 method not allowed
406 not acceptable
407 proxy authentication required
408 request timeout 请求超时
409 conflict
410 gone
411 length required
412 precondition failed
413 payload too large
414 uri too long
415 unsupported media type 不支持的媒体类型
416 range not satisfiable
417 expectation failed
418 I'm a teapot
422 unprocessable entity
423 locked
424 failed dependency
426 upgrade required 需要升级
428 precondition required
429 too many requests 请求次数过多
431 request header fields too large 请求头数量太大

5xx 服务器错误

5xx 范围的状态码是保留给服务器端错误用的。这些错误常常是从底层的函数抛出来的,并且开发人员也通常没法处理。发送这类状态码的目的是确保客户端能得到一些响应。收到 5xx 响应后,客户端没办法知道服务器端的状态,所以这类状态码是要尽可能的避免。

Status Code Description
500 internal server error,服务器端在执行请求时发生了错误
501 not implemented
502 bad gateway,网关错误
503 service unavailable,服务器暂时处于超负载或正在进行停机维护,现在无法处理请求
504 gateway timeout,网关超时
505 http version not supported,不支持的 HTTP 版本
506 variant also negotiates
507 insufficient storage
508 loop detected
510 not extended
511 network authentication required

请求成功

重定向

重定向的新地址都需要在响应头 Location 中返回

条件请求

客户端错误

服务端错误

501405 的区别是:405 是表示服务端不允许客户端这么做,501 是表示客户端或许可以这么做,但服务端还没有实现这个功能

参考

上一篇下一篇

猜你喜欢

热点阅读