针对不良预先存在的数据的RESTful响应代码?

时间:2017-03-31 21:52:24

标签: rest http-response-codes

我有一种情况,有时我们数据库中的数据不足以处理请求(即,我们需要一个帐号或尚未填充的东西)。

如果用户的请求包含无效语法,则为400。 如果数据库关闭或服务失败,则为500,502或503.

我正在考虑422,这基本上意味着“请求没有格式错误,但您的请求的语义导致了错误”。这里的问题是它不是请求本身固有的东西,而是我们预先存在的数据的状态。

2 个答案:

答案 0 :(得分:1)

您详细说明的行为是服务器错误。因此,应使用5xx响应代码而不是4xx(代表客户端错误)。现在讨论5xx系列中的响应代码;虽然似乎没有任何响应代码可以正确定义您的服务器行为,但500内部服务器错误似乎是最接近的。在这里查看rfc:https://tools.ietf.org/html/rfc2616#section-10.5.1

这还取决于您对服务的操作和资源。

答案 1 :(得分:0)

我明白为什么你会使用422并同意这一点 但是,我想知道是否有一种优雅的方式可以在没有数据的情况下完成请求?也许响应发生但可用的功能等降级。 如果没有,那么在所需数据可用之前,您是否可以阻止该功能暴露? IE浏览器。此人已登录并具有有效的会话ID,例如。