首页/网络/协议速查/202 Accepted 已受理
HTTP 方法与状态码91 条

202 Accepted 已受理

请求已被接受处理,但处理尚未完成,结果未知;适合异步任务、批处理与队列投递。

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

202 表示已受理但没完成

202 Accepted 的含义是请求已经被接受处理,但处理还没有完成,结果也还不确定。它最适合异步任务:导出报表、批量处理、消息投递这类耗时的操作先受理再执行。响应里通常会给出任务标识与查询进度的地址,调用方拿到 202 之后必须自己轮询状态或等待回调,把 202 当成成功终态是设计上最常见的错误。

基本信息

名称202 Accepted
作用异步受理,不承诺处理结果
规范RFC 9110 第 15.3.3 节
响应体常见任务编号与进度查询地址
配套机制轮询状态接口、回调通知、消息队列的完成事件
与 201 的区别201 表示资源已经创建完成,202 只表示请求已被接受

受理与轮询

受理与轮询
curl -si -X POST https://api.example.com/jobs -H 'Content-Type: application/json' -d '{"type":"export"}'
# HTTP/1.1 202 Accepted
# Location: /jobs/j-8891                  # 用 Location 或响应体给出查询地址
# {"job_id":"j-8891","status_url":"/jobs/j-8891"}
curl -s https://api.example.com/jobs/j-8891             # 轮询状态:常见 running 与 succeeded 与 failed
curl -s -H 'Idempotency-Key: req-88231' -X POST https://api.example.com/jobs -d '{"type":"export"}'   # 幂等键避免重复受理

输出观察项

观察项含义注意点
202 状态码请求已受理不代表执行成功
Location 或 status_url任务状态查询地址缺失时调用方无法跟踪进度
job_id任务唯一标识日志与工单里都用它对齐问题
Retry-After建议的轮询间隔据此设计退避,避免密集轮询
任务状态字段running 与 succeeded 与 failed失败时需要有错误原因字段

典型使用场景

  • 大报表导出:受理后异步生成,完成后通知下载地址
  • 批量数据导入:先受理再排队处理,避免请求长时间挂住
  • 消息或通知投递:交给队列后立即返回受理结果
  • 耗时较长的部署与构建触发:返回任务编号供后续查询
  • 跨系统数据同步:受理后由后台任务完成,前端只展示进度
202 的最终结果可能是失败,调用方必须实现状态查询或回调处理,否则会出现「界面显示提交成功、实际什么也没做」的静默失败,这类问题在事故复盘里非常常见。
异步接口应配合幂等机制:同一个业务请求被重复提交时用幂等键返回同一个任务,避免用户重试产生多个重复任务。

易错点

  • 把 202 当成成功终态直接提示用户完成,任务实际失败时无人感知,形成静默失败
  • 轮询没有退避策略,密集请求任务状态接口,反而把服务端压垮
  • 接口不返回任务标识或查询地址,调用方只能靠猜或者重新发起请求
  • 缺少幂等机制导致重复受理,一次误操作产生多个重复任务并占用资源

数据来源与参考

  • RFC 9110 §15.3.3 202 Accepted

相关工具

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