JAX-RS @QueryParam example

In this article we will explain about the JAX-RS, you can use @QueryParam annotation to inject URI query parameter into Java method. for example,

/employees/query?url=dineshonjava.com

In above URI pattern, query parameter is "url=dineshonjava.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("/employee")
public class EmployeeController {

@GET
@Path("/query")
public Response getEmployees(
@QueryParam("from") int from,
@QueryParam("to") int to,
@QueryParam("orderBy") List<String> orderBy) {

return Response
.status(200)
.entity("getEmployees is called, from : " + from + ", to : " + to
+ ", orderBy" + orderBy.toString()).build();

}

}
URI Pattern : "http://localhost:8181/sdnext/doj/employee/query?from=2300&to=3300&orderBy=age&orderBy=name"

getEmployees is called, from : 2300, to : 3300, orderBy[age, name]

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("/employee")
public class EmployeeController {

@GET
@Path("/uriinfo")
public Response getEmployees(@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("getEmployees is called, from : " + from + ", to : " + to
+ ", orderBy" + orderBy.toString()).build();

}

}
URI Pattern : "http://localhost:8181/sdnext/doj/employee/uriinfo?from=2300&to=3300&orderBy=age&orderBy=name"

getEmployees is called, from : 2300, to : 3300, 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("/employee")
public class EmployeeController{
 
 @GET
 @Path("/default")
 public Response getEmployee(
  @DefaultValue("1000") @QueryParam("from") int from,
  @DefaultValue("999")@QueryParam("to") int to,
  @DefaultValue("name") @QueryParam("orderBy") List<String> orderBy) {
 
  return Response
     .status(200)
     .entity("getEmployees is called, from : " + from + ", to : " + to
   + ", orderBy" + orderBy.toString()).build();
 
 }
 
}
URI Pattern : "http://localhost:8181/sdnext/doj/employee/default"

getEmployees is called, from : 1000, to : 999, orderBy[name]



Download SourceCode
JAX-RS @QueryParam example.zip



References
1. JAVA REST Web Services
2. Wikipedia for REST Web Service

 



<<Previous <<   || Index ||   >>Next >>


No comments:

Post a Comment