我正在与我的同事讨论在请求特定资源(例如数据表)时返回的最佳响应是什么,并且url是有效的,但处理此数据表时的部分过程是获取特定用户可能找不到。
我在SO上发现了这个问题:Should a RESTful API return 400 or 404 when passed an invalid id
我的理解是,如果请求有效,即url和参数传递给它,如果找不到用户,它应返回404(NotFound)。
但我的同事的观点是数据表是资源,因此,由于找不到用户请求,实际上应该将其视为400(BadRequest)
有人可以澄清它应该是什么吗?
谢谢
尽管BadRequest最初可能有意义,但它不符合400的定义。
400:由于语法格式错误,服务器无法理解请求。客户端不应该在没有修改的情况下重复请求。
当请求缺少必填字段时,保留400,提供不正确的数据类型等。
在你的情况下,听起来好像用户提出了一个有效的请求但是没有找到完成所需的部分数据(我猜这是Uri的一部分)。这听起来更像是404,当找不到指定资源以外的东西时,它完全有效。
404:服务器找不到与Request-URI匹配的任何内容。没有说明该病症是暂时的还是永久性的。如果服务器通过一些内部可配置的机制知道旧资源永久不可用且没有转发地址,则应该使用410(Gone)状态代码。当服务器不希望确切地说明请求被拒绝的原因,或者没有其他响应适用时,通常会使用此状态代码。
未找到的内容的细节可以在错误代码或错误消息中表示。