http 状态码
概述
这些状态码只是协议规定,大部分状态码都是开发者根据业务逻辑自定义的。一般情况下,接口一般都是直接全部做 200 处理,然后在响应体中定义 code 或者其他字段来表示业务状态码。进行深度的业务处理。
状态码分类
这些都是响应状态码,用于描述 HTTP 请求的处理结果。
一、1xx 信息性状态码(请求已接收,需要客户端继续处理)
表示服务器已收到请求,需客户端继续操作或等待进一步处理。这类状态码在实际应用中较少见。
- 100 Continue:服务器已收到请求的初始部分,客户端可继续发送剩余请求体。
- 101 Switching Protocols:服务器同意切换协议(如从 HTTP 切换到
WebSocket)。 - 103 Early Hints:服务器提前返回资源提示,用于优化页面加载(HTTP/2 新特性)。
二、2xx 成功状态码(请求已成功处理)
表示客户端请求已被服务器成功接收、理解并处理。
- 200 OK 请求成功,返回预期资源常规 API 请求成功响应
- 201 Created 请求已创建新资源(如 POST 请求)新增用户、创建订单后
- 202 Accepted 请求已接受但尚未处理完成(异步操作)|提交批量任务后
- 204 No Content 请求成功但无返回内容 删除资源后,无需返回数据
- 206 Partial Content 成功返回部分资源(用于分片请求)大文件断点续传
三、3xx 重定向状态码(需客户端进一步操作以完成请求)
表示资源位置发生变化,需客户端重定向到新 URL。一般常见 301 和 302 。
- 301 Moved Permanently:资源永久重定向(SEO 需注意更新链接)。
例:网站域名变更(旧域名→新域名)。 - 302 Found:资源临时重定向(默认重定向方式)。
例:未登录用户访问需要权限的页面,重定向到登录页。 - 303 See Other:请求的响应需重定向到其他 URL(常用于 POST 请求后的重定向)。
例:表单提交成功后跳转到结果页。 - 304 Not Modified:资源未修改,可使用缓存(客户端需验证缓存有效性)。
例:浏览器请求已缓存的静态资源,服务器确认无需更新。 - 307 Temporary Redirect:临时重定向(保留原始请求方法)。
例:HTTPS 强制跳转(HTTP→HTTPS)。 - 308 Permanent Redirect:永久重定向(保留原始请求方法)。
例:API 版本升级后,旧接口永久指向新接口。
四、4xx 客户端错误状态码(客户端请求存在错误)
表示客户端请求有误,服务器无法处理。对于前端来说,最应该注意的状态码。
- 400 Bad Request 请求格式错误或参数无效 发送 JSON 格式错误、缺少必填参数
- 401 Unauthorized 未授权(需身份验证)登录 token 过期、未提供认证信息
- 403 Forbidden 禁止访问(无权限)用户权限不足、IP 被封禁
- 404 Not Found 资源不存在 访问 URL 错误、资源被删除
- 405 Method Not Allowed 请求方法不允许,对仅支持 GET 的接口发送 POST 请求
- 408 Request Timeout 请求超时,服务器未在规定时间内收到请求
- 429 Too Many Requests 请求频率过高(限流) 短时间内多次请求触发频率限制
- 415 Unsupported Media Type 不支持的媒体类型 发送服务器无法解析的格式(如请求体为 text/plain 但服务器要求 JSON)
五、5xx 服务器错误状态码(服务器处理请求时发生错误)
表示服务器在处理请求时内部出错,无法完成请求。常见于后端错误。
- 500 Internal Server Error:服务器内部错误(最常见的服务器端异常)。
例:代码执行报错、数据库连接失败。 - 501 Not Implemented:服务器不支持请求的功能。
例:请求服务器未实现的 HTTP 方法或 API 接口。 - 502 Bad Gateway:网关错误(代理服务器获取不到上游服务器的响应)。
例:Nginx 代理后端服务时,后端服务崩溃。 - 503 Service Unavailable:服务不可用(服务器暂时无法处理请求)。
例:服务器过载、正在维护(常伴随 Retry-After 响应头)。 - 504 Gateway Timeout:网关超时(代理服务器等待上游服务器响应超时)。
例:后端服务处理缓慢,代理服务器等待超时而返回错误。 - 511 Network Authentication Required:需要网络认证(客户端未完成网络层认证)。
例:公共 WiFi 的认证页面跳转前返回此状态码。