REST API 和 HTTP 状态代码

标签 rest asp.net-web-api asp.net-web-api2 http-status-codes

我有一堆对输入资源执行操作的 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/

相关文章:

javascript - Node.js 等待发出 HTTP 请求的 REST 服务的回调

json - 如何通过 angularjs $resource 访问 json 中的嵌套对象

java - Spring Rest 和 Jsonp

.net - DataContract Serializer 数组节点名称 'd3p1'

javascript - 将 JSON 从 JStree 发送到 MSSQL DB

asp.net - 网络 API 2 : "Sample not available"

scala - 在 Scala Play Framework v2.6.x 中出现 cors 错误

c# - PreRegistrationHandler 没有因任务错误代码而失败

c# - 可以为 web api 使用通用方法吗?

c# - 来自 URI 的 Web API 模型绑定(bind)