JAX-RS Annotations Explained
In this example we shall learn some important JAX-RS annotations. To understand this tutorial, following is the prerequisite knowledge required:
- Basic knowledge of how to use annotations
- Basic REST Architecture
Table Of Contents
1. JAX-RS Annotations
1.1 @Path
@Path
annotation defines the URI or the relative path of the JAX-RS method. Following is the sample usage of @Path
annotation.
PathAnnotation.java
package com.javacodegeeks.examples.rest.annotations; import java.util.List; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import com.javacodegeeks.examples.rest.entites.Author; public class PathAnnotation { @GET @Produces("application/xml") @Path("javacodegeeks/authors") public List getAuthors() { // TODO: Code for returning list of authors return null; } }
1.2 @PathParam
This annotation is used to bind the parameter passed in the URI to the parameter in the REST method. Following is the example usage of @PathParam
annotation.
PathParamAnnotation.java
package com.javacodegeeks.examples.rest.annotations; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import com.javacodegeeks.examples.rest.entites.Author; public class PathParamAnnotation { @GET @Produces("application/json") @Path("javacodegeeks/authors/{id}") public Author getAuthor(@PathParam("id") int id) { // TODO: Code for returning author by id return null; } }
In the above code snippet parameter in curly braces is mapped to method parameter using @PathParam
annotation.
1.3 @GET
@GET
annotation specifies that the HTTP GET request shall be served by this method. Following is the example usage.
GetAnnotation.java
package com.javacodegeeks.examples.rest.annotations; import java.util.List; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import com.javacodegeeks.examples.rest.entites.Author; public class GetAnnotation { @GET @Produces("application/xml") @Path("javacodegeeks/authors") public List getAuthors() { // TODO: Code for returning list of authors return null; } }
1.4 @POST
@POST
annotation specifies that the HTTP POST request shall be served by this method. Following is the example usage.
PostAnnotation.java
package com.javacodegeeks.examples.rest.annotations; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import com.javacodegeeks.examples.rest.entites.Author; public class PostAnnotation { @POST @Consumes("application/json") public void addAuthor(Author contact) { //TODO: Code to store author } }
1.5 @PUT
@PUT
annotation corresponds to HTTP PUT method. Following is the sample usage of @PUT
annotation.
PutAnnotation.java
package com.javacodegeeks.examples.rest.annotations; import javax.ws.rs.Consumes; import javax.ws.rs.PUT; import com.javacodegeeks.examples.rest.entites.Author; public class PutAnnotation { @PUT @Consumes("application/json") public void updateAuthor(Author contact) { //TODO: Code to update or add author } }
1.6 @DELETE
@DELETE
annotation corresponds to HTTP DELETE method. Following is the sample usage of @DELETE
annotation.
DeleteAnnotation.java
package com.javacodegeeks.examples.rest.annotations; import javax.ws.rs.DELETE; import javax.ws.rs.Path; import javax.ws.rs.PathParam; public class DeleteAnnotation { @DELETE @Path("javacodegeeks/authors/{id}") public void deleteAuthor(@PathParam("id") int id) { //TODO: Delete author with id passed as PathParam } }
1.7 @Consumes
@Consumes
annotation defines the MIME media type of resource sent by client which a REST method consumes. Following is the sample usage of @Consumes
annotation.
ConsumesAnnotation.java
package com.javacodegeeks.examples.rest.annotations; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import com.javacodegeeks.examples.rest.entites.Author; public class HeadAnnotation { @POST @Consumes("application/json") public void addAuthor(Author contact) { //TODO: Code to store author } }
In the above code snippet, REST method is consuming resource having MIME type JSON.
1.8 @Produces
@Produces
annotation specifies the MIME media type of resource that is sent back to client as a return response of REST method. Following is the sample usage of @Produces
annotation.
ProducesAnnotation.java
package com.javacodegeeks.examples.rest.annotations; import java.util.List; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import com.javacodegeeks.examples.rest.entites.Author; public class ProducesAnnotation { @GET @Produces("application/json") @Path("javacodegeeks/authors") public List getAuthors() { // TODO: Code for returning list of authors return null; } }
In the above code snippet, REST method is returning response having MIME type JSON.
1.9 @QueryParam
@QueryParam
annotation is used to extract out query parameters from the request URI. Following is the sample usage of @QueryParam
annotation.
QueryParamAnnotation.java
package com.javacodegeeks.examples.rest.annotations; import java.util.List; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import com.javacodegeeks.examples.rest.entites.Author; public class QueryParamAnnotation { @GET @Produces("application/json") @Path("javacodegeeks/authors") public List getAuthor(@QueryParam("name") String name, @QueryParam("age") int age) { // TODO: Calculate and return list of authors which match the criteria // of age and name return null; } }
2. Download the source code
This tutorial explained some of the most important JAX-RS annotations.
You can download the full source code of this example here: JAX-RS Annotations Explained