小编典典

REST API 错误返回良好做法

all

当涉及从 REST API 返回错误时,我正在寻找有关良好实践的指导。我正在开发一个新的 API,所以我现在可以采取任何方向。目前我的内容类型是
XML,但我计划将来支持 JSON。

我现在添加了一些错误案例,例如客户端尝试添加新资源但已超出其存储配额。我已经在处理某些带有 HTTP 状态代码的错误情况(401 用于身份验证,403
用于授权,404 用于普通错误请求 URI)。我查看了祝福的 HTTP 错误代码,但 400-417
范围似乎都不适合报告特定于应用程序的错误。所以起初我很想用 200 OK 和一个特定的 XML
有效负载返回我的应用程序错误(即。付给我们更多的钱,你会得到你需要的存储空间!)但我停下来想它,它似乎很肥皂(/吓得耸耸肩)。此外,感觉就像我将错误响应分成不同的情况,因为有些是
http 状态代码驱动的,而另一些是内容驱动的。

那么行业建议是什么?良好实践(请解释原因!)以及,从客户端 pov 来看,REST API 中的哪种错误处理使客户端代码的工作更轻松?


阅读 121

收藏
2022-03-04

共1个答案

小编典典

所以起初我很想用 200 OK 和一个特定的 XML
有效负载返回我的应用程序错误(即。付给我们更多的钱,你会得到你需要的存储空间!)但我停下来想它,它似乎很肥皂(/吓得耸耸肩)。

除非请求确实没有任何问题,否则我不会返回
200。在RFC2616中,200
表示“请求已成功”。

如果已超出客户端的存储配额(无论出于何种原因),我将返回 403(禁止):

服务器理解请求,但拒绝执行。授权将无济于事,并且不应重复请求。如果请求方法不是 HEAD
并且服务器希望公开请求未完成的原因,它应该在实体中描述拒绝的原因。如果服务器不希望向客户端提供此信息,则可以使用状态代码 404(未找到)来代替。

这告诉客户端请求是好的,但它失败了(200 不会做的事情)。这也使您有机会在响应正文中解释问题(及其解决方案)。

您还想到了哪些其他特定的错误情况?

2022-03-04