我有一堆对输入资源执行操作的 PUT 操作。 让我们举个例子:我的 API 中有一个支付操作,它声明信用卡必须按特定金额收费。 在我的代码中,我首先验证卡上是否有足够的信用额度,然后执行操作。如果金额不足,我会直接返回 400,但我不确定它是否正确。
在这种情况下,哪个是正确的 HTTP 状态代码?
当然,我可以发送一个带有 HTTP 200
的响应,并附加一个有效负载,其中包含解释错误的更多详细信息。我还可以发回 HTTP 400 Bad Request
或更好的 HTTP 412 Precondition Failed
。
在这种验证失败的情况下,发送响应的正确代码是什么?是否有任何资源可供我阅读以了解 HTTP 状态代码和 HTTP 动词背后的基本原理?
最佳答案
使用 422 无法处理的实体。
422 状态码意味着服务器理解请求实体的内容类型(因此 415 Unsupported Media Type 状态码是不合适的),并且请求实体的语法是正确的(因此 400 Bad Request 状态码是不合适的) ) 但无法处理包含的指令。
如果做不到这一点,只需对与您的业务域有关的任何错误使用 400。自 2004 年 6 月起,错误 400 的描述已修改为:
The server cannot or will not process the request due to something that is perceived to be a client error
关于REST API 和 HTTP 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29280942/