Wednesday, 15 June 2011

java - How to filter a request that has an invalid parameter in JAX-RS? -



java - How to filter a request that has an invalid parameter in JAX-RS? -

by "invalid" mean parameter not expected.

for example:

@path("/") public interface exampleinterface { @get @path("/example") public response test( @queryparam("param1") string param1, @queryparam("param2") string param2 ); }

and phone call ".../example?param3=foo"

you can check utilize containerrequestfilter , compare passed parameters defined parameters:

@provider public class requestparamfilter implements containerrequestfilter { @context private resourceinfo resourceinfo; @context private httpservletrequest servletrequest; @override public void filter(containerrequestcontext requestcontext) throws ioexception { set<string> validparams = new hashset<string>(); method method = resourceinfo.getresourcemethod(); (annotation[] annos : method.getparameterannotations()) { (annotation anno : annos) { if (anno instanceof queryparam) { validparams.add(((queryparam) anno).value()); } } } (string param : servletrequest.getparametermap().keyset()) { if (!validparams.contains(param)) { requestcontext.abortwith(response.status(status.bad_request).build()); } } } }

don't forget servletrequest#getparametermap returns map contains both - query string parameters , parameters passed in body of request. maybe need parse query string yourself.

note: won't speed application.

java filter jax-rs resteasy query-parameters

No comments:

Post a Comment