REST 调用中缺少路径参数应该导致 400 还是 404?

Should a missing Path Parameter in a REST call result in 400 or 404?

如果 REST 服务有 2 个用例,

  1. GET http://localhost:8080/resource/{id} ==> 即 returns 所有 根据“id”的资源数据

    因此,如果客户端请求没有像 GET 这样的“id”路径参数 http://localhost:8080/resource/那应该是一个合适的 对此请求的回应。应该是 400 还是 404?

    请注意,GET http://localhost:8080/resource/

    没有托管服务
  2. GET http://localhost:8080/users/{id}/history/ ==> 即 returns 根据“id”的用户历史详细信息

    因此,如果客户端请求没有像 GET 这样的“id”路径参数 http://localhost:8080/users/history/那应该是一个合适的 对此请求的回应。应该是 400 还是 404?

    请注意,没有为 GET 托管的服务 http://localhost:8080/users/history/

So if client requests without "id" path parameter like GET http://localhost:8080/resource/ then what should be an appropriate response to this request. Should it be 400 or 404 ?

404.

  • 那是调用者特别注意有效请求uri的错误码
  • 404 默认是可缓存的。您希望客户端和代理记住并重用 404 响应。 400(可以涵盖各种各样的问题)不会出现这种行为。

同样的论点适用于你的两个例子。