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
只是忽略它。大多数其他 Web 服务器会忽略它不理解的请求参数。
谷歌在这里忽略我的两个额外参数 https://www.google.com/#q=search+for+something&invalid=param&more=stuff
毫无疑问,客户必须坚持使用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客户端和服务器问题,这样两者都可以分开进化'
所以我认为只有缺失/无效的'强制'参数应该抛出异常,而不是选项,永远不会.