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(); } }
  • 相关阅读:
    网络-路由交换-路由基础-华为-OSPF的工作原理
    网络-路由交换-路由基础-华为-OSPF报文
    常见协议端口号和IP地址
    以太网帧类型速查(协议字段)
    TCP/UDP端口列表
    利用python生成简单的爆破字典
    BUU的三道文件包含题
    Poc、Exp、Payload、Shellcode的区别
    JavaScript Dom操作-增删改节点1
    JavaScript 图片轮播
  • 原文地址:https://www.cnblogs.com/Answer1215/p/9420439.html
Copyright © 2011-2022 走看看