When to use @QueryParam vs @PathParam
In a Java RESTful web service, the @QueryParam
annotation is used to bind a query parameter to a method parameter, while the @PathParam
annotation is used to bind a path parameter to a method parameter.
A query parameter is a value that is included in the query string of a URL. Query parameters are added to the end of the URL after a ?
character, and multiple query parameters are separated by &
characters. For example, in the URL https://example.com/search?q=java&page=1
, the q
and page
parameters are query parameters.
A path parameter is a placeholder in a URL path that is used to match a value in the request. Path parameters are typically used to identify a specific resource in the URL. For example, in the URL https://example.com/users/123
, the 123
parameter is a path parameter.
Here's an example of how to use @QueryParam
and @PathParam
in a Java RESTful web service:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;
@Path("/users")
public class UserResource {
@GET
@Path("/{id}")
public String getUser(@PathParam("id") int id) {
// code to retrieve user with id
}
@GET
public String searchUsers(@QueryParam("q") String query, @QueryParam("page") int page) {
// code to search for users with query and paginate results
}
}
In this example, the getUser
method has a @PathParam
annotation that binds the id
path parameter to the id
method parameter. The searchUsers
method has @QueryParam
annotations that bind the q
and page
query parameters to the query
and page
method parameters, respectively.
I hope this helps! Let me know if you have any questions.