当资源是工作表但找不到所需的用户时,BadRequest与NotFound

时间:2019-04-30 11:39:45

标签: rest api

我只是在这里与同事讨论关于请求特定资源(例如数据表)时返回的最佳响应是什么,并且url有效,但是处理此数据表的过程是该过程的一部分可能找不到的特定用户。

我在SO Should a RESTful API return 400 or 404 when passed an invalid id

上发现了这个问题

我的理解是,如果请求有效,即url和参数传递给它,如果找不到用户,它应该返回404(未找到)。

但是我同事的观点是,数据表是资源,因此,由于找不到用户请求,因此实际上应将其视为400(BadRequest)

有人可以澄清它应该是什么吗?

谢谢

1 个答案:

答案 0 :(得分:0)

尽管BadRequest最初可能很有意义,但它不符合400的定义。

  

400:由于语法格式错误,服务器无法理解该请求。客户端不应不加修改地重复请求。

当请求缺少必填字段,提供的数据类型不正确等时,请保留400。

在您的情况下,听起来用户发出了有效请求,但未找到完成所需的那部分数据(我猜这是Uri的一部分)。听起来更像是404,当找不到指定资源以外的其他东西时,它是完全有效的。

  

404:服务器未找到与Request-URI匹配的任何内容。没有迹象表明这种情况是暂时的还是永久的。如果服务器通过某种内部可配置的机制得知旧资源永久不可用并且没有转发地址,则应使用410(已消失)状态代码。当服务器不希望确切显示请求被拒绝的原因或没有其他响应可用时,通常使用此状态代码。

未找到的内容的详细信息可以在错误代码或错误消息中表示。