HTTP 404与400的无效查询参数

Loc*_*Loc 7 query-parameters http-status http-status-code-404 http-status-code-400

这是我的请求网址:

http://server.com/app/user/getuser/?userId=9999

注意,这userId是查询参数。未嵌入的路径参数。

我了解如果请求URL为:http : //server.com/app/user/getuser/9999并且ID 9999在数据库中不存在,则应使用404。

但是userId查询参数应使用哪种HTTP状态?现在我返回的是400,而不是404。

Ron*_*eau 7

我会使用404 Not Found

为什么?

RFC 7231所定义400错误的请求这样的回应:

400(错误请求)状态代码表示服务器由于某些原因(例如格式错误的请求语法,无效的请求消息框架或欺骗性的请求路由)而被视为客户端错误,因此服务器无法或不会处理该请求。

...由于您的请求有效,并且您正试图访问不存在的资源,因此我认为404未找到状态更为合适。RFC 7231定义其含义如下:

404(未找到)状态代码表示原始服务器未找到目标资源的当前表示,或不愿意透露该资源的存在。