假设我有一个端点/process
,该端点接受带有object_id
的POST请求。但是,我的API需要访问ID为object_id
的对象的多个子对象以计算其响应。
假设找到了对象但没有找到子对象,我应该返回哪个状态代码和错误消息?
由于我想通知最终用户出了什么问题而不是返回空白响应,所以我可以看到几个选项:
400 Bad Request
。但是,这可能错误地暗示该请求有问题,而没有错。404 Not Found
。但是,这可能错误地暗示object_id
所引用的对象不存在,确实如此。答案 0 :(得分:1)
首先,您需要确定问题是客户端还是服务器端。 4XX错误是针对错误的请求。暗示用户发送的请求有问题。 如果找不到该对象是由于服务器端问题引起的,那么我认为最好抛出一个服务器端错误(即5XX)。
在OP的评论之后,我的建议是:412 (Precondition Failed)
。另外,我认为“未找到”和“无内容”状态不适合您的情况。
答案 1 :(得分:0)
我认为这种情况下没有标准的HTTP状态代码。 4xx
代码表示客户端错误,而5xx
是服务器错误。可以说,在这种情况下,请求没有错,因此您可以返回自定义的5xx
状态代码。
但是一些标准状态代码却很接近:
409 Conflict
422 Unprocessable Entity
404 Not Found