JAX-RS和未知的查询参数

Ral*_*lph 6 rest jax-rs query-parameters

我有一个调用RESTEasy(JAX-RS)Java服务器的Java客户端.我的一些用户可能拥有比服务器更新版本的客户端.

该客户端可以调用服务器上的资源,该资源包含服务器不知道的查询参数.是否有可能在服务器端检测到这一点并返回错误?

我理解,如果客户端调用尚未在服务器上实现的URL,则客户端将收到404错误,但如果客户端传入未实现的查询参数(例如:),会发生什么?sort_by=last_name

Tar*_*log 5

是否有可能在服务器端检测到这一点并返回错误?

是的,你可以做到.我认为最简单的方法就是使用@Context UriInfo.您可以通过调用getQueryParameters()方法获取所有查询参数.所以你知道是否有任何未知参数,你可以返回错误.

但是如果客户端传入未实现的查询参数会发生什么

如果您没有实现处理"未知"参数的特殊支持,则将调用该资源并以静默方式忽略该参数.

我个人认为最好忽略未知参数.如果您只是忽略它们,那么使API向后兼容可能会有所帮助.

  • 如果未知的查询参数表示“提示”(如排序顺序),那么我同意忽略它不会有任何危害,但是如果查询参数类似于“ / users?last_name = j *”,则意味着仅调用方希望姓氏以“ j”开头的用户,并且服务器返回所有用户,这可能是一个问题。 (2认同)