I have a Java client that calls a RESTEasy (JAX-RS) Java server. It is possible that some of my users may have a newer version of the client than the server.
That client may call a resource on the server that contains query parameters that the server does not know about. Is it possible to detect this on the server side and return an error?
I understand that if the client calls a URL that has not been implemented yet on the server, the client will get a 404 error, but what happens if the client passes in a query parameter that is not implemented (e.g.: ?sort_by=last_name)?
Yes, you can do it. I think the easiest way is to use
@Context UriInfo. You can obtain all query parameters by callinggetQueryParameters()method. So you know if there are any unknown parameters and you can return error.If you implement no special support of handling “unknown” parameters, the resource will be called and the parameter will be silently ignored.
Personally I think that it’s better to ignore the unknown parameters. If you just ignore them, it may help to make the API backward compatible.