REST API URL中的额外查询参数

Vin*_*gla 6 java api rest web-services resteasy

在我的Rest应用程序中,资源url还支持查询参数,如pageSize,pageNum,name等.所以请求网址看起来像

/资源/ {ID}?页次= 1&的pageSize = 25&DESC = "你好"

现在假设一个客户端添加一个额外的查询参数,说'lang',我的服务器不支持

/ resource/{id}?pageNum = 1&pageSize = 25&desc ="hello"&lang ="eng",但我的服务器不支持任何lang参数.

什么应该是最好的设计决定

选项1:忽略额外的无效查询参数并提供请求.

选项2:向客户端抛出错误的请求消息.

感谢Advance Singla

And*_*and 6

只是忽略它。大多数其他 Web 服务器会忽略它不理解的请求参数。

谷歌在这里忽略我的两个额外参数 https://www.google.com/#q=search+for+something&invalid=param&more=stuff


akn*_*non 5

毫无疑问,客户必须坚持使用Api文档.

但是APis中的某些变化呢(只是一个小的变化,不涉及迁移到新的API版本)

比如说,API资源:/ dummy/api/Iid1支持3个查询参数,即a,b,c

所以完整的URI:/?虚设/ API/Id1的一个= 1&B = 20& C = 45是由API暴露的有效请求,并且所有的查询参数即,b,c是任选的参数,可以即,如果这些PARAMS不存在在请求中,服务器将它们处理为某个默认值,如a = 0,b = 0,c = 0

在某些时候,大量客户端基于上述URL方案构建其应用程序.

现在API提供者想要废弃参数'b'并决定抛弃额外/未知参数的异常

这意味着所有客户端应用程序围绕涉及参数"b"的最后一个URL方案构建将失败!

这只是表明,扔额外/未知的查询参数异常,不约而同地,导致了客户端和服务器的关注,这是我猜的紧密耦合,完全违背了REST原则,很可能有一个中心主题,以"完全separte客户端和服务器问题,这样两者都可以分开进化'

所以我认为只有缺失/无效的'强制'参数应该抛出异常,而不是选项,永远不会.