【发布时间】:2010-10-30 21:17:38
【问题描述】:
我正在寻找有关从 REST API 返回错误的良好做法的指导。我正在开发一个新的 API,所以我现在可以采取任何方向。我的内容类型目前是 XML,但我计划将来支持 JSON。
我现在添加一些错误案例,例如客户端尝试添加新资源但已超出其存储配额。我已经在处理某些带有 HTTP 状态代码的错误情况(401 用于身份验证,403 用于授权,404 用于普通错误请求 URI)。我查看了祝福的 HTTP 错误代码,但 400-417 范围似乎都不适合报告特定于应用程序的错误。所以一开始我很想用 200 OK 和一个特定的 XML 有效负载返回我的应用程序错误(即。付给我们更多钱,你会得到你需要的存储空间!)但我停下来想它,它似乎很肥皂(/惊恐地耸耸肩)。此外,感觉就像我将错误响应分成不同的情况,因为一些是 http 状态代码驱动的,而另一些是内容驱动的。
那么行业建议是什么?良好实践(请解释原因!)以及从客户端 pov 来看,REST API 中的哪种错误处理使客户端代码的工作更轻松?
【问题讨论】:
-
澄清一下:我对返回哪个特定的 HTTP 状态代码不太感兴趣,但是将有效负载错误与 HTTP 状态代码结合起来是否是一种好的 REST 实践,或者更好地单独依赖有效载荷。
-
The REST API Design Handbook 很好地涵盖了这个主题。
-
该问题不征求意见,而是征求指导/建议,应重新打开并用作参考。在 2016 年结束这个问题的意义是什么,这个问题是在 2009 年创建的,有 400 多票,没有一个基于意见的现有答案
-
大多数都没有提到,但是使用 HTTP 错误代码可能会导致关于问题主要原因的问题。 HTTP 是传输协议,404 应该表明 URL 传输级别存在问题(例如,错误的路径)。如果应用程序无法通过其 id 找到数据集,这是一个应用程序级别错误(不是传输级别错误),并且 404,正如 restful http 状态代码用户所建议的那样,可能会导致错误的结论。一般来说,我不喜欢在使用状态码时混淆传输层和应用层。
-
查看另一个类似主题的答案:stackoverflow.com/a/63046962/2153237
标签: web-services http rest