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(); }