我试图了解构建 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/