工作中无法避免与状态码打交道。那http状态码是什么呢?有什么作用呢? 状态码是服务端返回的请求结果,不同的状态码代表不同的返回结果。我们可以根据不同的返回结果在axios拦截器上给用户提示,以提高用户的使用体验。
状态码的类别
| 类别 | 原因 | |
|---|---|---|
| 1xx | Informational(信息相关的) | 表示接收到请求并且继续处理 |
| 2xx | Success(成功) | 表示请求正常处理完毕 |
| 3xx | Redirection(重定向) | 表示需要进一步操作已完成即客户端进一步操作才能完成请求 |
| 4xx | Client Error(客户端错误) | 表示客户端可能出现了错误,例如请求不存在的页面等 |
| 5xx | Server Error(服务端错误) | 表示服务器可能出现了错误,例如服务器故障或服务器无法完成处理等 |
详细分解
1xx(临时响应)
100
Continue继续:服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101itching Protocols切换协议:服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到 HTTP 的新版本协议。
2xx(成功)
200
OK成功:服务器已经成功处理了请求(一般为get和post方法)。通常表示服务器提供了请求的网页。
201Created已创建:请求成功并且服务器创建了新的资源。
202Accepted已接受:服务器已接受请求,但尚未处理。
203Non-Authoritative Information非授权信息:服务器已经成功处理了请求,但返回的信息可能来自另一来源。
204No Content无内容:服务器成功处理了请求,但没有返回任何内容。在未更新网页的情况下,可确保浏览器继续显示当前文档。
205Reset Content重置内容:服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域。
206Partial Content部分内容:服务器成功处理了部分GET请求
3xx(重定向)
300
Multiple Choices多种选择:针对请求,服务器可执行多种操作。服务器可根据请求者(user agent)选择一项操作,或提供操作列表供请求者选择。
301Moved Permanently永久移动:请求的资源已被永久的移动到新 URI,返回信息会包括新的 URI,浏览器会自动定向到新 URI。今后任何新的请求都应使用新的URI代替。
302Found临时移动:与 301 类似。但资源只是临时被移动。客户端应继续使用原有URI。
303See Other查看其它地址:与 301 类似。使用 GET 和POST请求查看。
304Not Modified未修改:所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。
305Use Proxy使用代理:所请求的资源必须通过代理访问。
307Temporary Redirect临时重定向:与 302 类似。使用 GET 请求重定向。
4xx(请求错误)
400
Bad Request请求错误:客户端请求的语法错误,服务器无法理解。
401Unauthorized未授权:请求要求用户的身份认证。对于需要登录的网页,服务器可能返回此响应。
402Payment Required请求保留。
403Forbidden禁止:服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found未找到资源:服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面。
405Method Not Allowed方法禁用:客户端请求中的方法被禁止。
406Not Acceptable不接受:服务器无法根据客户端请求的内容特性完成请求。
407Proxy Authentication Required需要代理授权:请求要求代理的身份认证,与 401 类似,但请求者应当使用代理进行授权。
408Request Time-out请求超时:服务器等待客户端发送的请求时间过长。
409Conflict=冲突:服务器完成客户端的 PUT 请求是可能返回此代码,服务器处理请求时发生了冲突。
410Gone已删除:客户端请求的资源已经不存在。410 不同于 404,如果资源以前有现在被永久删除了可使用 410 代码,网站设计人员可通过 301 代码指定资源的新位置。
411Length Required需要有效长度:服务器无法处理客户端发送的不带 Content-Length 的请求信息。
412Precondition Failed未满足前提条件:客户端请求信息的先决条件错误。
413Request Entity Too Large请求实体过大:由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个 Retry-After 的响应信息。
414Request-URI Too Large请请求的URI过长:求的 URI 过长(URI 通常为网址),服务器无法处理、
415Unsupported Media不支持媒体类型:Type 服务器无法处理请求附带的媒体格式。
416Requested range not satisfiable请求范围不符合要求:客户端请求的范围无效。
417Expectation Failed未满足期望值:服务器无法满足Expect 的请求头信息。
5xx(服务端错误)
500
Internal Server Error服务器内部错误:服务器遇到错误,无法完成请求。
501Not Implemented尚未实施:服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
502Bad Gateway错误网关:作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应。
503Service Unavailable服务器不可用(一般暂时性的):由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的 Retry-After 头信息中。
504Gateway Time-out网关超时:充当网关或代理的服务器,未及时从远端服务器获取请求。
505HTTP Version not supportedHTTP版本不受支持:服务器不支持请求的 HTTP 协议的版本,无法完成处理。
常用状态码
知道了基本理论,我们就要运用到实际工程中去。在工作中,并非用到所有的http状态码。而我们常用到的状态码为:
- 101 切换请求协议,例如:HTTP 切换到 WebSocket
- 200 请求成功,有响应体,服务器成功返回网页
- 301 永久重定向:会缓存
- 302 临时重定向:不会缓存
- 304 协商缓存命中
- 400 请求错误
- 403 服务器禁止访问
- 404 资源未找到,请求的网页不存在
- 500 服务器端错误
- 503 服务器繁忙
当然!!具体情况具体分析,要看公司后端如何设计了。