2017-03-31 58 views
0

我有一种情况,有时候我们的数据库中的数据不足以处理请求(即我们需要一个帐号或者没有填充的东西)。糟糕的预先存在的数据的RESTful响应代码?

如果用户的请求包含无效的语法,这将会是一个400 如果数据库下降,或服务失败了,这将会是一个500,502,503或

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

回答

1

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

这也取决于你正在做你的服务和哪个资源的操作。

0

我可以看到你为什么会使用422并同意这一点。
但是,我想知道是否有一个优雅的方式仍然完成没有数据的请求?也许响应发生,但可用的功能等降级。 如果没有,那么您是否可以防止在要求的数据可用之前公开该功能? IE浏览器。例如,该人登录并具有有效的会话ID。

+0

没有。在一个表中没有ID的情况下,无法对其他服务进行后续调用。 –

+0

好的,那么是的,500的回应将是最好的选择。 – cigloo