HTTP 常见的状态码
2xx 状态码
2xx 状态码表示操作成功, 但是不同的方法可以返回更精确的状态码
POST返回201状态码,表示生成了新的资源;DELETE返回204状态码,表示资源已经不存在。
状态码 | 含义 |
---|---|
200 OK | 是最常见的成功状态码,表示一切正常; 如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据 |
201 Created | POST返回201状态码,表示生成了新的资源 |
204 No Content | 也是常见的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据; DELETE返回204状态码,表示资源已经不存在 |
206 Partail Content | 是应用于 HTTP 分块下载或断点续传,表示响应返回的 body 数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态 |
3xx 状态码
API 用不到301状态码(永久重定向)和302状态码(暂时重定向,307也是这个含义),因为它们可以由应用级别返回,浏览器会直接跳转,API 级别可以不考虑这两种情况。
状态码 | 含义 |
---|---|
301 Moved Permanently | 表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问 |
302 Found | 表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问。 301 和 302 都会在响应头里使用字段 Location,指明后续要跳转的 URL,浏览器会自动重定向新的 URL |
303 See Others | 表示参考另一个 URL, 用于POST、PUT和DELETE请求。收到303以后,浏览器不会自动跳转,而会让用户自己决定下一步怎么办 |
304 Not Modified | 不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,也就是告诉客户端可以继续使用缓存资源,用于缓存控制 |
4xx 状态码
4xx 状态码表示客户端错误
状态码 | 含义 |
---|---|
400 Bad Request | 服务器不理解客户端的请求,未做任何处理。 |
401 Unauthorized | 用户未提供身份验证凭据,或者没有通过身份验证。 |
403 Forbidden | 用户通过了身份验证,但是不具有访问资源所需的权限。 |
404 Not Found | 所请求的资源不存在,或不可用。 |
405 Method Not Allowed | 用户已经通过身份验证,但是所用的 HTTP 方法不在他的权限之内。 |
410 Gone | 所请求的资源已从这个地址转移,不再可用。 |
415 Unsupported Media Type | 客户端要求的返回格式不支持。比如,API 只能返回 JSON 格式,但是客户端要求返回 XML 格式。 |
422 Unprocessable Entity | 客户端上传的附件无法处理,导致请求失败。 |
429 Too Many Requests | 客户端的请求次数超过限额 |
5xx 状态码
5xx状态码表示服务端错误。一般来说,API 不会向用户透露服务器的详细信息,所以只要500, 503两个状态码就够了
状态码 | 含义 |
---|---|
500 Internal Server Error | 客户端请求有效,服务器处理时发生了意外。 |
501 Not Implemented | 表示客户端请求的功能还不支持,类似“即将开业,敬请期待”的意思 |
502 Bad Gateway | 通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误 |
503 Service Unavailable | 服务器无法处理请求,一般用于网站维护状态。 |
504 Gateway Timeout | HTTP 504 表示作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应 |
引用: