针对已存在错误数据的RESTful响应代码?

针对已存在错误数据的RESTful响应代码?,rest,http-response-codes,Rest,Http Response Codes,我遇到过这样的情况,有时数据库中的数据不足以处理请求,即我们需要一个帐号或一些尚未填充的数据 如果用户的请求包含无效语法,则为400。 如果数据库关闭,或者某个服务出现故障,则可能是500、502或503 我正在考虑,这基本上意味着请求没有格式错误,但是请求的语义导致了错误。这里的问题是,它不是请求本身固有的东西,而是我们预先存在的数据的状态 我明白你为什么会使用422,并同意这一点。 但是,我想知道是否有一种优雅的方法可以在没有数据的情况下完成请求?可能发生响应,但可用功能等降级。 如果没有,

我遇到过这样的情况,有时数据库中的数据不足以处理请求,即我们需要一个帐号或一些尚未填充的数据

如果用户的请求包含无效语法,则为400。 如果数据库关闭,或者某个服务出现故障,则可能是500、502或503


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

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

您详细说明的行为是服务器错误。因此,应使用5xx响应代码,而不是表示客户端错误的4xx响应代码。现在是5xx系列中的哪个响应代码;虽然似乎不存在任何正确定义服务器行为的响应代码,但500内部服务器错误似乎是最接近的。请在此处查看rfc:


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

没有。如果一个表中没有id,就无法对其他服务进行后续呼叫。啊,好的,那么是的,500响应将是最好的选择。