424 是什么
424 Failed Dependency 是 WebDAV(RFC 4918 §11.4)定义的失败传播码:在批量请求中,某个操作因为同一事务内的前置操作失败而未能执行。它让服务器表达「不是这个子请求本身有问题,而是它依赖的步骤挂了」,常见于 PROPPATCH 以及事务型批量写入。
基本信息
| 名称 | 424 Failed Dependency |
|---|---|
| 类别 | 4xx(作为 207 子项时表示该成员未执行) |
| 规范 | RFC 4918 §11.4 |
| 场景 | 批量与事务型操作中的级联失败 |
| 位置 | 通常作为 207 Multi-Status 的子项出现 |
| 现状 | 普通 REST 接口很少使用 |
典型使用场景
- WebDAV 批量属性修改(PROPPATCH)的部分失败表达
- 事务语义设计参考:需要「要么都成功」的接口如何返回失败
- 客户端解析 207 时区分「自己失败」与「被上游拖累」
- 排障:批量操作只报错一项时的连锁反应定位
- 错误码评审:判断业务是否真的需要依赖失败语义
- 重试策略设计:确认重试单个失败项是否有效
批量操作示意
批量操作示意
PROPPATCH /col/doc.txt
<propertyupdate> 内含多条 set 指令
→ 第一步(创建属性)失败
→ HTTP/1.1 207 Multi-Status
<response>/col/doc.txt 424 Failed Dependency # 后续变更被跳过
# 424 说明原因在依赖项上,而不是本项的参数本身有问题207 子项状态码
| 状态码 | 含义 | 客户端处理 |
|---|---|---|
| 200 与 201 | 子操作成功 | 继续处理其余项 |
| 424 | 因其他子项失败而未执行 | 重试整组或跳过 |
| 507 | 存储不足导致失败 | 清理空间后重试 |
| 403 | 无权限 | 修正权限配置 |
普通 REST API 很少需要 424:批量任务通常在响应体里逐项列出错误,比借用状态码更清晰。
424 的语义是「依赖失败」而不是「本身失败」,日志里区分这两类能显著缩短定位时间。
只有重试整组操作才有意义:依赖关系没解决时,单独重试失败项通常会继续返回 424。
部分框架把 424 用于其他含义,对接前要确认对方文档,不要按 WebDAV 语义想当然。
事务边界要明确:若第一步失败后后续步骤本就不应执行,用 424 表达比逐项返回 4xx 更准确。