Rest 如果未找到隐含资源,则使用哪个状态代码/错误消息

Rest 如果未找到隐含资源,则使用哪个状态代码/错误消息,rest,Rest,假设我有一个端点/进程,它接受一个带有object_id的POST请求。但是,我的API需要访问带有object_id的对象的几个子对象来计算它的响应 假设找到了对象,但没有找到子对象,我应该返回哪个状态代码和错误消息 由于我想通知最终用户出了问题,而不是返回空白响应,因此我可以看到几个选项: 400个错误的请求。然而,这可能会错误地暗示请求有问题,而实际上并没有。 404找不到。但是,这可能错误地暗示object_id引用的对象不存在,而它确实存在。 我认为这个场景没有标准的HTTP状态代码。

假设我有一个端点/进程,它接受一个带有object_id的POST请求。但是,我的API需要访问带有object_id的对象的几个子对象来计算它的响应

假设找到了对象,但没有找到子对象,我应该返回哪个状态代码和错误消息

由于我想通知最终用户出了问题,而不是返回空白响应,因此我可以看到几个选项:

400个错误的请求。然而,这可能会错误地暗示请求有问题,而实际上并没有。 404找不到。但是,这可能错误地暗示object_id引用的对象不存在,而它确实存在。
我认为这个场景没有标准的HTTP状态代码。4xx代码表示客户端错误,而5xx表示服务器错误。可以说,在这种情况下,请求没有问题,因此您可以返回一个定制的5xx状态代码

但是,一些标准状态代码很接近:

409冲突 422不可处理实体 甚至找不到404
首先,您需要确定问题是客户端还是服务器端。 4XX错误用于错误请求。暗示用户发送的请求有问题。 如果由于服务器端问题而找不到对象,我认为最好抛出服务器端错误,即5XX

更新:
根据OP的评论,我的建议是:412先决条件失败。此外,我认为“未找到”和“无内容”状态不适合您的场景。

问题是客户端的,因为请求意味着存在某些尚未创建的资源,即客户端。在这种情况下,412前提条件失败可能是一种良好状态。412用于出现前提条件时,如If-Modified-Since、If-Match等