首页/网络/协议速查/200 OK 请求成功
HTTP 方法与状态码91 条

200 OK 请求成功

最通用的成功响应:请求已被处理,响应体(如有)是对请求的正常结果。

协议速查网络更新于 2026-10-13

200 是什么

200 OK 是最通用的成功响应:请求已被服务器处理,响应体(如果有)就是对请求的正常结果。RFC 9110 §15.3.1 只把它定义为通用成功,不区分是读取、创建还是修改。因此 REST 实践中更推荐把精确语义交给 201、202、204 承担:全部堆在 200 上,短期看不出问题,长期会让监控、缓存与重试策略失去判断依据。

基本信息

名称200 OK(RFC 9110 §15.3.1)
作用通用成功,最常用的成功响应
常见于读取资源、提交后返回处理结果
响应体可以有也可以没有,取决于业务
何时不用创建用 201、异步受理用 202、无内容用 204

典型使用场景

  • 读取接口数据:返回列表或详情的正常结果
  • 提交后同步返回处理结果:登录、搜索、简单更新
  • 静态资源访问成功:页面、图片、脚本的常规响应
  • 幂等更新完成:替换成功但业务上不需要给出新地址
  • 第三方回调确认:对方推送后回一个成功信号

读取接口并核对状态

读取接口并核对状态
curl -s -w '\nHTTP %{http_code}\n' https://api.example.com/users/101   # 打印响应体与状态码
curl -si https://api.example.com/users/101 | head -12   # 连响应头一起看,确认内容类型与缓存策略
curl -s -o /dev/null -w '%{http_code}\n' https://api.example.com/health   # 健康检查只取状态码

成功码怎么分工

场景推荐码关键点
读取到内容200带上正确的媒体类型
创建了新资源201用地址头指出新资源位置
异步受理,结果未定202给出进度查询地址
成功但没有内容可返回204不得携带响应体
资源未变化,用本地缓存304属于重定向类,不是成功类

让错误不再伪装成成功

让错误不再伪装成成功
# 反例:HTTP 200,响应体里塞业务错误码
# {"code":5001,"msg":"库存不足"}
# 正确做法:业务错误用 4xx,并给出机器可读的错误标识
curl -si -X POST https://api.example.com/orders -H 'Content-Type: application/json' -d '{}'   # 应返回 400 或 409
缓存排障时要把成功与未修改分开看:返回 200 说明取回了完整内容,返回 304 说明命中了协商缓存;两者是完全不同的链路,混在一起分析会得出错误结论。
把业务失败也返回 200、只在响应体里给错误码,会让网关、监控、重试与浏览器缓存全部失去判断依据:统计口径看不到失败量,客户端无法自动重试,压测也测不出瓶颈。

客户端分支怎么写

  • 按首位数字判断类别而不是逐个码硬编码,否则服务端新增一个码就会走进未知分支
  • 读到成功且无内容的状态码时不要去解析响应体,否则会抛出解析异常
  • 读到异步受理的状态码时进入轮询流程,不要当作已经完成
  • 读到限流的状态码时按提示的等待时间退避,立刻重试只会加重限流
  • 对成功但内容为空的响应要做兜底,避免前端把空数据渲染成报错页

成功响应该带哪些头

头部作用
内容类型与字符集决定客户端按什么格式解析响应体
缓存策略决定该响应能被复用多久、要不要回源验证
位置头创建成功时指出新资源的地址
响应长度便于客户端判断内容是否收全

健康检查要接受整段成功码

健康检查要接受整段成功码
# 只把 200 当成功,会在服务改成无内容响应时误报故障
code=$(curl -s -o /dev/null -w '%{http_code}' https://api.example.com/health)
case "$code" in
  2??) echo 正常 ;;   # 整段成功码都算健康
  *)   echo 异常: $code ;;
esac

与其他成功码的取舍

  • 已经创建过的资源被重复提交时返回成功还是冲突,取决于业务是否要求调用方感知重复
  • 批量操作只部分成功时不要统一回一个成功码,应在响应体里逐条给出每个元素的结果
  • 没有内容可返回的操作优先用无内容码,省掉客户端对空响应体的解析分支

易错点

  • 业务错误用成功码加自定义错误字段返回,监控与告警统计不到真实失败率
  • 修改成功却仍返回 200 并带一段无用响应体,客户端误以为需要重新解析资源
  • 把所有成功场景都用同一个码,调用方无法区分是否真的创建了新资源
  • 200 与 304 在排障时混为一谈,误判缓存未命中或内容已更新

数据来源与参考

  • RFC 9110 §15.3.1 200 OK

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌