发送到api的请求是:
url: /users/{userid}respource/{resourceid}
method: POST
body: {SubResourceId: 6, Message: ''}
所以它是一个api。它创建用户,资源和子资源的某些映射。 在这种情况下,如果找不到用户或资源,则api返回404。但是,如果在DB中找不到subresource(在DB中传递),则状态代码应该是什么?
答案 0 :(得分:0)
我认为您应该使用4 **错误,因为这是客户端错误,它们引用的是不存在的子资源。如果查看HTTP状态错误的定义,则会看到例如400错误的请求意味着语法错误,客户端不应再次尝试相同的请求。但是404表示未找到,但将来可能会出现,因此可以在以后的时间再次尝试该请求。
在所有情况下,都应该有一条提示性消息,如果可用,则提供更多详细信息。因此,在这种情况下,您可能应该发送404和一条消息,说明找不到子资源。基本上,您是从更深层次传递404。
有人争辩说,找到了您在URI中引用的“资源”,并且404并不完美。但是,看看w3c Definitions中可用的各种状态代码,似乎没有一个更合适的代码。
我会考虑的另一个选项是500,内部服务器错误。您可能会争辩说服务器应该期望带有有效subresourceid的请求。由于子资源不存在,因此服务器无法进一步处理请求。再说一次,只要它们是明确的错误消息,它就可以工作,但感觉比404还要麻烦。
但最重要的是,请确保您在API中进行错误处理时保持一致。
答案 1 :(得分:-1)
理想情况下,响应代码应为200,并显示一条消息,指出未找到任何子资源,也可以是“ 204 No Content”。您可以在wiki link上详细了解它。
它必须与您在整个应用程序中一直使用的响应代码一致。