我有一个系统,其中用户主要用整数 ID 表示。我有资源;我们称它为 X。X 与 2 个用户相关联:一个创建了 X,另一个将在创建者完成后批准 X。X 的批准人在通过 POST 提交时由创建者选择(或者可以在以后编辑),请求通过用户 ID 标识批准人。还有一个额外的限制:批准者和创建者是配对的。如果创建者被分配给他们,审批者只能批准 X。
因此,对于请求中的批准者用户 ID,我有一些可能的失败案例:
- 格式错误的 ID(非整数)
- 审批人 ID 是一个整数,但不存在具有该 ID 的用户。
- 审批者 ID 是现有用户,但该用户没有审批者角色。
- 审批人 ID 是现有审批人,但审批人未分配给创建者。
400 显然是案例 1 的正确状态码,但它似乎不是 2-4 的正确状态码。400 指定格式错误的请求,但 2-4 是特定于现有数据的问题,而不是解析请求的问题。我考虑过 409,但这似乎是资源本身的问题。这是与资源 X 相关的附加资源的问题。我也考虑过 406,但这似乎是为了提供未知格式的内容(如仅接受 JSON 时的 XML)。
那么什么状态码适合表明客户端提供了格式良好但错误的数据?