14

这是我的请求网址:

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

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

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

但是对于这种情况应该使用什么 HTTP 状态userId是查询参数?现在我返回 400 而不是 404。

4

1 回答 1

15

我会使用404 Not Found

为什么?

RFC 7231定义了一个400 Bad Request响应,如下所示:

400 (Bad Request) 状态码表示服务器不能或不会处理请求,因为某些东西被认为是客户端错误(例如,格式错误的请求语法、无效的请求消息帧或欺骗性请求路由)。

...由于您的请求有效并且您只是试图访问不存在的资源,我认为404 Not Found状态更合适。RFC 7231将其含义定义如下:

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

于 2018-08-03T16:25:09.990 回答