JAX-RS stands for:
Java API for RESTful Web Services ,hence it is a http uniformed verb based service.
Some of The main annotations in JAX – RS:
@Path : specifies the relative path for a class or method
@GET/@PUT/@POST/@DELETE/@HEAD: Indicates the http request type on the method but only one can be annotated
@Produces: specifies the MIME media type of the response of a resource
@Consumes: specifies the MIME media type of the request to a resource
@PathParam: is used to extract a parameter from the uri path of a resource
@QueryParam: It is using to extract query parameters from the uri path of a resource
Creating an endpoint injecting with CDI the repo into our endpoint
Annotating the code with @Path(“/books”) turns the code into a restful web service.
@Path("/books")
public class BookEndpoint {
@Inject
private bookRepo BookRepo;
@Get
@Produces(APPLICATION_JSON)
public Response getBooks(){
List<Book> books = bookRepository.findAll();\
if(books.size() == 0)
return Response.status(Response.Status.NO_CONTENT).build();
}
return Response.ok(books).build();
}
@Get
@Produces(APPLICATION_JSON)
@Path("/id")
public Response getBook(@PathParam("id") Long id){
Book book = bookRepository.find(id);
if(book == null)
return Response.status(Response.Status.NOT_FOUND).build();
return Response.ok(book).build();
}
@Delete
@Path("/id" : \\d+)
public Response getBook(@PathParam("id") Long id){
bookRepository.delete(id);
return Response.noContent().build();
}
@Post
@Consumes(APPLICATION_JSON)
public Response createBook(Book book, @Context UriInfo uriInfo){
book = bookRepository.create(book);
URI createdURI = uriInfogetBaseUriBuilder.path(book.getId()).build();
return Response.created(createdURI).build();
}