JAX-RS @QueryParam example
In JAX-RS, you can use @QueryParam annotation to inject URI query parameter into Java method. for example,
/users/query?url=mkyong.com
In above URI pattern, query parameter is “url=mkyong.com“, and you can get the url value with @QueryParam("url").
1. @QueryParam example
See a full example of using @QueryParam in JAX-RS.
import java.util.List; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; @Path("/users") public class UserService { @GET @Path("/query") public Response getUsers( @QueryParam("from") int from, @QueryParam("to") int to, @QueryParam("orderBy") List<String> orderBy) { return Response .status(200) .entity("getUsers is called, from : " + from + ", to : " + to + ", orderBy" + orderBy.toString()).build(); } }
URI Pattern : “users/query?from=100&to=200&orderBy=age&orderBy=name”
getUsers is called, from : 100, to : 200, orderBy[age, name]
@QueryParam will convert the query parameter “orderBy=age&orderBy=name” into
java.util.List automatically.2. Programmatic Query Parameter
Alternatively, you can get the query parameters grammatically, via “@Context UriInfo“. See equivalent version below :
import java.util.List; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; @Path("/users") public class UserService { @GET @Path("/query") public Response getUsers(@Context UriInfo info) { String from = info.getQueryParameters().getFirst("from"); String to = info.getQueryParameters().getFirst("to"); List<String> orderBy = info.getQueryParameters().get("orderBy"); return Response .status(200) .entity("getUsers is called, from : " + from + ", to : " + to + ", orderBy" + orderBy.toString()).build(); } }
URI Pattern : “users/query?from=100&to=200&orderBy=age&orderBy=name”
getUsers is called, from : 100, to : 200, orderBy[age, name]
3. @DefaultValue example
@DefaultValue is good for optional parameter.
import java.util.List; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; @Path("/users") public class UserService { @GET @Path("/query") public Response getUsers( @DefaultValue("1000") @QueryParam("from") int from, @DefaultValue("999")@QueryParam("to") int to, @DefaultValue("name") @QueryParam("orderBy") List<String> orderBy) { return Response .status(200) .entity("getUsers is called, from : " + from + ", to : " + to + ", orderBy" + orderBy.toString()).build(); } }
URI Pattern : “users/query”
getUsers is called, from : 1000, to : 999, orderBy[name]






How can you achieve same effect in Spring REST service?
Hi,
Thanks for the useful post. How can we pass OR conditions and operators like ,!= etc in the query param?