zoukankan      html  css  js  c++  java
  • [JavaEE] Implement a REST Endpoint

    1. Create a rest folder with JAXRSConfiguration.java:

    package com.pluralsight.bookstore.rest;
    
            import javax.ws.rs.ApplicationPath;
            import javax.ws.rs.core.Application;
    
    @ApplicationPath("api")
    public class JAXRSConfiguration extends Application {
    
    }

    2. Create Endpoint file: BookEndpoint.java:

    @Path("/books")
    public class BookEndpoint {
    
        @Inject
        private BookRepository bookRepository;
    
    }

    package com.pluralsight.bookstore.rest;
    
    import com.pluralsight.bookstore.model.Book;
    import com.pluralsight.bookstore.repository.BookRepository;
    
    import javax.inject.Inject;
    import javax.validation.constraints.Min;
    import javax.ws.rs.*;
    import javax.ws.rs.core.Context;
    import javax.ws.rs.core.Response;
    import javax.ws.rs.core.UriInfo;
    
    import java.net.URI;
    import java.util.List;
    
    import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
    //api/books
    @Path("/books")
    public class BookEndpoint {
    
        @Inject
        private BookRepository bookRepository;
    
        @POST
        @Consumes(APPLICATION_JSON)
        public Response createBook(Book book, @Context UriInfo uriInfo) {
            book =  bookRepository.create(book);
            URI createedURI = uriInfo.getBaseUriBuilder().path(book.getId().toString()).build();
            return Response.created(createedURI).build();
        }
    
        @GET
        @Produces(APPLICATION_JSON)
        public Response getBooks() {
            List<Book> books = bookRepository.findAll();
    
            if(books.size() == 0) {
                return Response.noContent().build();
            }
            return Response.ok(books).build();
        }
    
        @GET
        @Path("/{id: \d+}")
        @Produces(APPLICATION_JSON)
        public Response getBook(@PathParam("id") @Min(1) Long id) {
            Book book = bookRepository.find(id);
    
            if(book == null) {
                return Response.status(Response.Status.NOT_FOUND).build();
            }
    
            return Response.ok(book).build();
        }
    
        // api/books/count
        @GET
        @Path("/count")
    @Produces(PLAIN_TEXT)
    public Response countBooks() { Long nbOfBooks = bookRepository.countAll(); if(nbOfBooks == 0) { return Response.noContent().build(); } return Response.ok(nbOfBooks).build(); } @DELETE @Path("/{id : \d+}") public Response deleteBook(Long id) { bookRepository.delete(id); return Response.noContent().build(); } }
  • 相关阅读:
    ruby
    快捷键_命令行
    Babylon
    遇见的一些关于js冲突的问题
    js中出生年月日的使用,以及性别的判断
    js中iframe的使用
    js中ul与li的使用
    jQuery,ajax,for循环使用典型案例
    Easy | LeetCode 118. 杨辉三角
    Easy | LeetCode 461. 汉明距离 | 位运算
  • 原文地址:https://www.cnblogs.com/Answer1215/p/9420439.html
Copyright © 2011-2022 走看看