在我的 Rest 应用程序中,资源 url 还支持查询参数,如 pageSize、pageNum、name 等。所以请求 url 看起来像
/resource/{id}?pageNum=1&pageSize=25&desc="hello"
现在假设客户端添加了一个额外的查询参数,比如我的服务器不支持的“lang”
/resource/{id}?pageNum=1&pageSize=25&desc="hello"&lang="eng" ,但我的服务器不支持任何 lang 参数。
什么应该是最好的设计决策
选项 1:忽略额外的无效查询参数并提供请求。
选项 2:向客户端抛出错误的请求消息。
提前致谢 辛拉
最佳答案
毫无疑问,客户必须遵守 Api 文档。
但是 API 中的某些更改呢(只是不涉及迁移到新 API 版本的小更改)
比如说,一个API资源:/dummy/api/Iid1支持3个查询参数,即a,b,c
所以完整的 URi :/dummy/api/Id1?a=1&b=20&c=45 是 API 公开的有效请求,所有查询参数,即 a、b、c 都是可选参数, 即如果请求中不存在这些参数,则服务器将它们处理为某个默认值,如 a = 0, b = 0, c= 0
一段时间以来,大量客户基于上述 URL 方案构建他们的应用程序。
现在 API 提供者想要废弃参数 'b' 并决定抛出额外/未知参数的异常
这意味着所有围绕最后一个涉及参数“b”的 URL 方案构建的客户端应用程序都将失败!
这只是表明,为额外的/未知的查询参数抛出异常,总是会导致客户端和服务器关注点的紧密耦合,我想这完全违背了 REST 原则,其中心主题可能是“完全分离客户端和服务器关注点,以便两者可以单独发展”
所以我认为只有丢失/无效的“强制”参数应该抛出异常,而不是选项参数,永远不要。
关于java - REST API Url 中的额外查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15947074/