业务逻辑错误的 REST HTTP 代码

标签 rest http http-status-codes

我试图了解构建 REST HTTP API 的原则,但我在 HTTP 响应代码方面遇到了麻烦。我读过 this article如果由于复杂业务逻辑强制执行的某些限制而无法成功完成请求,我仍然无法理解 REST API 应该输出哪些代码。

例如,一个在线商店 API 公开了一种将商品添加到购物车的方法,商店经理决定对此执行一些规则:

  • 不能将类别 A 和 B 的产品添加到同一购物车
  • 购物车中所有产品的总折扣金额不能超过 $10
  • 类别 A 的产品在星期一不能添加到购物车

如果在将新商品添加到购物车后违反了这些规则中的任何一条,我可以发送 JSON 响应,例如 { "Result": "Failed", "Reason": "TotalDiscountCannotExceed10Dollars"}等等,但是我应该随响应一起发送什么样的 HTTP 状态代码?

最佳答案

如果您添加此类与 HTTP 无关的故障的内部 json 错误响应状态代码,可能会好得多。像这里一样 { “结果”:“失败”,“原因”:“TotalDiscountCannotExceed10Dollars”} 服务器响应成功(http -200 OK),但 json 响应错误(失败)。

因此对于这些错误,您必须有一些自定义的 json 错误响应。为了更灵活,您可以通过 self 理解对这些错误进行分类。

关于业务逻辑错误的 REST HTTP 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43937807/

相关文章:

python - 带有 staticdir 的 Google App Engine 中的 403 错误

javascript - NodeJS/重新验证 : How can I recieve file upload in API?

jquery - 使用 HTTP PUT 通过 Jquery 和 Rails 3 发送 JSON

javascript - 检查 Axios Promise catch block VueJs 中的 HTTP 状态代码

ios - 尽管将 info.plist 更改为 NSAppTransport Security 为 NO Xcode 7.2 iOS 9.2,但仍出现 App Transport Security 错误

用于离线 HTTP POST 请求的 iOS 存储转发框架

javascript - 如何处理所有 AJAX 调用的特定 HTTP 错误?

java - 具有 Jersey 2.x 和 RESTEasy 依赖项的项目是否可行?

node.js - 没有响应正文的帖子,201 或 204 哪个响应代码更好?

web-services - RESTful GET 和 POST 的不同模型