问题描述
对于无效的路径参数和无效的查询参数服务应该返回什么,我有点困惑。 尤其是路径参数,没人能确认是400还是404。
假设以下是服务端点:https://samples-service.com/rest/v1/qvc/{countryCode}/users?numberOfusers=10
countryCode 是路径参数。
我听说有人为这两种回答提供了理由。
J使用 404: 如果用户尝试访问无效路径,则服务应返回 404 Not Found。所以既然是路径参数,应该是404
400 的理由 因为是不正确的参数。应该是404。不管是路径参数还是查询参数还是payload
对我来说,这两个都有意义。不确定哪个是正确的。
numberOfusers 是查询参数 如果用户输入了无效数字(例如:负数、-9)。服务应该返回 400 或 404。 我认为在这种情况下 400 是可以接受的。但只是想确认一下。
解决方法
无论是使用路径参数还是查询参数标识资源,都是在标识资源,因此如果未找到,则返回 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 之间(包括 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