由于系统状态而形成良好但无效的数据的正确状态代码

时间:2013-10-28 07:25:35

标签: rest http-status-codes

我有一个系统,其中用户主要使用整数ID表示。我有资源;让我们称之为X. X与2个用户相关联:一个创建X,另一个在创建者完成时批准X. X的批准者由创建者在通过POST提交时选择(或者可以在以后编辑),并且请求通过用户ID识别批准者。还有一个额外限制:批准者和创作者配对在一起。批准者只能在分配创建者的情况下批准X.

因此,我在请求中有一些关于审批者用户ID的可能失败案例:

  1. 格式错误的ID(非整数)
  2. 审批者ID是一个整数,但不存在具有该ID的用户。
  3. 审批者ID是现有用户,但该用户没有审批者角色。
  4. 审批者ID是现有审批者,但审批者未分配给创建者。
  5. 400显然是案例1的正确状态代码,但它似乎不是2-4的正确状态代码。 400表示格式错误的请求,但2-4是特定于现有数据的问题,而不是解析请求。我考虑过409,但这似乎是资源本身的问题。这是与资源X 相关的其他资源的问题。我也考虑过406,但这似乎是为了提供未知格式的内容(如仅接受JSON时的XML)。

    那么什么状态代码适合表明客户端提供了良好的数据但是数据不好?

2 个答案:

答案 0 :(得分:2)

请注意,为了清楚客户端,您将始终包含错误的解释,因此使用适当消息的略微不精确的代码肯定会有所帮助。

话虽如此,我会使用404(未找到)1和2.整数与否,具有该ID的资源不存在。

3和4似乎都局限于我们的应用程序,所以我会使用400. 403可以用于3,但这可能意味着身份验证问题。

答案 1 :(得分:2)

我同意@Will for 1& 2 - 404。

3& 4,我与409一起使用。因为在一般情况下(你说批准者可以在以后更改)之间没有真正的区别(我可以看到):

  • 审批者ID是现有用户,但该用户没有审批者角色。

  • 审批者ID是现有用户,5秒前他们 审批者,但现在不再是这种情况了

所以感觉和编辑冲突一样。

相关问题