2020-11-03 02:55:39
HTTP状态码是服务器对客户端请求的响应分类标识,掌握常见状态码能提升调试效率、优化用户体验并促进团队协作。以下是15个核心状态码的分类详解:
一、信息响应(100–199):请求已接收,处理中100 Continue客户端上传大文件前,先发送Expect: 100-continue头,服务器返回此状态码表示允许继续发送主体。示例场景:上传视频时避免无效传输。
101 Switching Protocols协议升级(如HTTP→WebSocket),响应头包含Upgrade: websocket。示例场景:实时聊天应用建立WebSocket连接。
103 Early Hints主响应未准备好时,通过Link头预加载资源(如CSS/JS),提升首屏加载速度。示例场景:电商网站提前加载商品图片。
200 OK通用成功响应,不同HTTP方法含义略有差异:
GET:返回资源数据(如JSON)。
POST:返回操作结果(如创建成功信息)。
HEAD:仅返回响应头。示例:{"id": 123, "name": "mCell"}。
201 Created资源创建成功,响应体或Location头返回新资源地址。示例:Location: /projects/456。
202 Accepted请求已接受但未处理完成(异步任务),返回任务ID和状态查询URL。示例:{"taskId": "abc123", "statusUrl": "/tasks/abc123/status"}。
204 No Content操作成功但无返回内容,常用于PUT/DELETE请求。示例:更新用户信息后不返回数据。
206 Partial Content支持断点续传或分块下载,通过Range头指定字节范围。示例:Range: bytes=0-999,响应头包含Content-Range。
301 Moved Permanently资源永久迁移,SEO会更新索引指向新URL。示例:网站域名变更后重定向到新域名。
302 Found临时重定向,浏览器自动跳转但不更新收藏或搜索索引。示例:促销活动页面临时迁移。
303 See Other对POST请求返回GET确认页(如订单提交后的支付页面)。示例:Location: /order/789/confirmation。
304 Not Modified缓存协商命中,客户端可直接使用本地缓存。调试提示:需注意浏览器缓存可能导致修改未生效。
400 Bad Request参数格式错误、JSON语法不合法或必填字段缺失。示例:请求体缺少username字段。
401 Unauthorized未认证或令牌过期,需重新登录。响应头:WWW-Authenticate: Bearer realm="example"。
403 Forbidden已认证但无权限访问资源。示例:普通用户尝试访问管理员页面。
404 Not Found请求地址不存在,可自定义404页面提升体验。示例:访问已删除的商品详情页。
405 Method Not Allowed客户端使用了不被允许的HTTP方法(如对只读接口发送POST请求)。示例:对GET接口发送PUT请求。
429 Too Many Requests请求频率超过限制,需等待Retry-After指定的秒数。优化建议:全局拦截器统一处理限流逻辑。
500 Internal Server Error通用服务器错误,需查看日志定位问题。示例:数据库连接失败或代码异常。
502 Bad Gateway网关(如Nginx)上游服务无响应或返回错误。排查方向:检查后端服务是否存活。
503 Service Unavailable服务临时维护或过载,可返回Retry-After提示恢复时间。示例:服务器宕机时的维护页面。
504 Gateway Timeout网关等待响应超时(如后端处理时间过长)。优化建议:调整超时时间或优化后端性能。
505 HTTP Version Not Supported客户端使用的HTTP版本不被服务器支持。示例:客户端强制使用HTTP/1.0但服务器仅支持HTTP/2。
掌握HTTP状态码能显著提升接口设计的优雅性、调试效率及团队协作流畅度,而非单纯应对面试。