信息 1xx
1xx 状态码
100Continue — 服务端已收到头,客户端应发送请求体
101Switching Protocols — 升级到 WebSocket 或 HTTP/2
102Processing — 服务端收到请求,仍在处理(WebDAV)
103Early Hints — 最终响应前预加载资源
使用说明
# 100 Continue: client sends Expect header, waits for 100 curl -H "Expect: 100-continue" -d @large.json URL # 101: upgrade to WebSocket Connection: Upgrade / Upgrade: websocket
成功 2xx
2xx 状态码
200OK — 标准成功响应
201Created — 资源创建成功(POST/PUT)
202Accepted — 请求已收到,异步处理中
203Non-Authoritative Info — 经代理转换
204No Content — 成功但无响应体(DELETE)
205Reset Content — 成功,客户端应重置表单
206Partial Content — 范围请求已完成
207Multi-Status — 多个状态码(WebDAV)
REST API 用法
GET → 200返回含资源体的响应
POST → 201资源已创建,包含 Location 头
PUT → 200/204已更新资源(含/不含响应体)
DELETE → 204已删除,不返回响应体
PATCH → 200局部更新,返回已修改资源
重定向 3xx
3xx 状态码
300Multiple Choices — 有多种表示可用
301Moved Permanently — 资源已永久移动,请更新书签
302Found — 临时重定向(常被误用为 303)
303See Other — POST 后用 GET 重定向
304Not Modified — 使用缓存版本(ETag/If-Modified)
307Temporary Redirect — 保持原方法,临时位置
308Permanent Redirect — 保持原方法,永久位置
重定向行为
301/308永久 — 搜索引擎更新索引
302/307临时 — 原 URL 仍为标准
301/302重定向后可能变更方法为 GET
307/308必须保持原 HTTP 方法
客户端错误 4xx
常见客户端错误
400Bad Request — 格式错误或参数无效
401Unauthorized — 需要认证或认证失败
403Forbidden — 已认证但无权限
404Not Found — 资源不存在
405Method Not Allowed — 不支持该 HTTP 方法
406Not Acceptable — 无法满足 Accept 头
408Request Timeout — 客户端发送请求过慢
409Conflict — 请求与当前状态冲突
更多客户端错误
410Gone — 资源已永久删除(不只是找不到)
411Length Required — 缺少 Content-Length 头
412Precondition Failed — If-Match/If-Unmodified 失败
413Content Too Large — 请求体超出限制
414URI Too Long — URL 超出服务器限制
415Unsupported Media Type — Content-Type 不被接受
422Unprocessable Content — 语法合法但语义错误
429Too Many Requests — 超出频率限制
服务器错误 5xx
5xx 状态码
500Internal Server Error — 服务端未处理的异常
501Not Implemented — 服务端不支持该方法
502Bad Gateway — 上游服务器返回无效响应
503Service Unavailable — 过载或维护中
504Gateway Timeout — 上游服务器未及时响应
505HTTP Version Not Supported — 不支持该版本
507Insufficient Storage — 无法存储请求(WebDAV)
511Network Auth Required — 需要门户登录
重试策略
500带退避重试;可能是暂时性错误
502/504重试 — 上游问题可能恢复
503重试前检查 Retry-After 头
501/505不重试 — 修复客户端请求
常用状态码
最常用状态码(速查)
200OK — 一切正常
201Created — 新资源已创建
204No Content — 成功,无响应体
301Moved Permanently — 更新 URL
304Not Modified — 使用缓存
400Bad Request — 修复请求
401Unauthorized — 先登录
403Forbidden — 权限不足
404Not Found — URL 错误或已删除
422Unprocessable — 验证错误
429Too Many Requests — 降速
500Server Error — 不是你的问题
502Bad Gateway — 代理/上游故障
503Unavailable — 稍后再试
请求头参考
请求头
Accept期望的响应媒体类型(如 application/json)
Authorization凭证(Bearer token、Basic base64)
Content-Type请求体的媒体类型
If-None-Match条件请求:用于缓存验证的 ETag
If-Modified-Since条件请求:用于缓存验证的日期
Cache-Control缓存指令(no-cache、max-age)
User-Agent客户端标识字符串
响应头
Content-Type响应体的媒体类型
Location重定向目标或已创建资源的 URL
ETag用于缓存验证的实体标签
Cache-Control缓存指令(max-age、no-store)
Retry-After重试等待时间(429/503)
WWW-Authenticate所需认证方案(随 401 发送)
Set-Cookie在客户端设置 Cookie
常用模式
缓存流程
# First request — server returns ETag GET /api/data → 200, ETag: "abc123" # Subsequent request — conditional GET /api/data, If-None-Match: "abc123" → 304 Not Modified (use cache)
认证流程
# Unauthenticated request GET /api/secret → 401, WWW-Authenticate: Bearer # With token GET /api/secret, Authorization: Bearer → 200 OK
频率限制
# Rate limited response 429 Too Many Requests Retry-After: 60 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 1700000000
内容协商
# Client prefers JSON, accepts XML Accept: application/json, application/xml;q=0.9 # Server can't satisfy → 406 Not Acceptable # Server returns best match → 200 + Content-Type