【问题标题】:What should be the error code for invalid path parameter/query parameter [duplicate]无效路径参数/查询参数的错误代码应该是什么[重复]
【发布时间】:2021-04-03 05:11:51
【问题描述】:

对于无效的路径参数和无效的查询参数,服务应该返回什么我有点困惑。 尤其是路径参数,没有人能确定是400还是404。

假设以下是服务端点:https://samples-service.com/rest/v1/qvc/{countryCode}/users?numberOfusers=10

countryCode 是路径参数。

  • 可接受的国家/地区代码是美国和英国。
  • 如果用户输入了错误的国家代码,应该如何响应? 400 Bad Request 或 404 Not Found?

我听说有人为这两种回答提供了理由。

J404 的用途: 如果用户尝试点击无效路径,则服务应返回 404 Not Found。所以既然是路径参数,应该是404

400 的理由 因为是不正确的参数。应该是404。不管是路径参数还是查询参数还是payload

对我来说,这两个都有道理。不知道哪个是正确的。

numberOfusers 为查询参数 如果用户输入了无效数字(例如:负数,-9)。服务应该返回 400 还是 404。 我认为在这种情况下 400 是可以接受的。但只是想确认一下。

【问题讨论】:

    标签: java api web-services restful-url


    【解决方案1】:

    无论您使用路径参数还是查询参数来识别资源,您都是在识别资源,因此如果找不到,您将返回 404 Not Found

    例子

    https://samples-service.com/rest/v1/qvc/{countryCode}/users
    https://samples-service.com/rest/v1/qvc/users?countryCode={countryCode}
    

    如果请求具有已定义限制的查询参数,例如pageSize 必须介于 1 和 100 之间,超出该范围的值是无效,您应该返回 400 Bad Request

    例子

    https://samples-service.com/rest/v1/qvc/US/users?pageSize=0
    https://samples-service.com/rest/v1/qvc/users?countryCode=US&pageSize=0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 2016-06-14
      • 2018-03-02
      • 2019-01-10
      • 2011-11-05
      相关资源
      最近更新 更多