无效路径参数/查询参数的错误代码应该是啥[重复]

Posted

技术标签:

【中文标题】无效路径参数/查询参数的错误代码应该是啥[重复]【英文标题】: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 是可以接受的。但只是想确认一下。

【问题讨论】:

【参考方案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

【讨论】:

以上是关于无效路径参数/查询参数的错误代码应该是啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

刚学使用MYSQL,登陆时提示错误信息1067,哪位大侠帮解答下是啥意思,谢谢

错误:一元“*”的类型参数无效(有“int”)

互斥锁因参数无效而失败是啥意思?

GoogleJsonResponseException:400 错误请求“无效的查询参数类型”

无效 POST 参数的错误代码

Oracle模糊查询CONCAT参数个数无效