[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(); } }
复制代码

 

posted @   Zhentiw  阅读(472)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2017-08-04 [React] Close the menu component when click outside the menu
2017-08-04 [D3] SVG Graphics Containers and Text Elements in D3 v4
2016-08-04 [React Native + Firebase] React Native: Real time database with Firebase -- setup & CRUD
2014-08-04 [Javascript] Closure Cove, Common mistake
2014-08-04 [Javascript]Clouse Cove, 2 ,Modifying Bound Values After Closure
2014-08-04 [Javascript] Closure Cove, 1
2014-08-04 [Backbone]7. Collection Views, Custom Events
点击右上角即可分享
微信分享提示