我有一个系统,其中用户主要使用整数ID表示。我有资源;让我们称之为X. X与2个用户相关联:一个创建X,另一个在创建者完成时批准X. X的批准者由创建者在通过POST提交时选择(或者可以在以后编辑),并且请求通过用户ID识别批准者。还有一个额外限制:批准者和创作者配对在一起。批准者只能在分配创建者的情况下批准X.
因此,我在请求中有一些关于审批者用户ID的可能失败案例:
400显然是案例1的正确状态代码,但它似乎不是2-4的正确状态代码。 400表示格式错误的请求,但2-4是特定于现有数据的问题,而不是解析请求。我考虑过409,但这似乎是资源本身的问题。这是与资源X 相关的其他资源的问题。我也考虑过406,但这似乎是为了提供未知格式的内容(如仅接受JSON时的XML)。
那么什么状态代码适合表明客户端提供了良好的数据但是数据不好?
答案 0 :(得分:2)
请注意,为了清楚客户端,您将始终包含错误的解释,因此使用适当消息的略微不精确的代码肯定会有所帮助。
话虽如此,我会使用404(未找到)1和2.整数与否,具有该ID的资源不存在。
3和4似乎都局限于我们的应用程序,所以我会使用400. 403可以用于3,但这可能意味着身份验证问题。
答案 1 :(得分:2)
我同意@Will for 1& 2 - 404。
3& 4,我将与409一起使用。因为在一般情况下(你说批准者可以在以后更改)之间没有真正的区别(我可以看到):
和
所以感觉和编辑冲突一样。