1. Create a rest folder with JAXRSConfiguration.java:

  1. package com.pluralsight.bookstore.rest;
  2.  
  3. import javax.ws.rs.ApplicationPath;
  4. import javax.ws.rs.core.Application;
  5.  
  6. @ApplicationPath("api")
  7. public class JAXRSConfiguration extends Application {
  8.  
  9. }

2. Create Endpoint file: BookEndpoint.java:

  1. @Path("/books")
  2. public class BookEndpoint {
  3.  
  4. @Inject
  5. private BookRepository bookRepository;
  6.  
  7. }

  1. package com.pluralsight.bookstore.rest;
  2.  
  3. import com.pluralsight.bookstore.model.Book;
  4. import com.pluralsight.bookstore.repository.BookRepository;
  5.  
  6. import javax.inject.Inject;
  7. import javax.validation.constraints.Min;
  8. import javax.ws.rs.*;
  9. import javax.ws.rs.core.Context;
  10. import javax.ws.rs.core.Response;
  11. import javax.ws.rs.core.UriInfo;
  12.  
  13. import java.net.URI;
  14. import java.util.List;
  15.  
  16. import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
  17. //api/books
  18. @Path("/books")
  19. public class BookEndpoint {
  20.  
  21. @Inject
  22. private BookRepository bookRepository;
  23.  
  24. @POST
  25. @Consumes(APPLICATION_JSON)
  26. public Response createBook(Book book, @Context UriInfo uriInfo) {
  27. book = bookRepository.create(book);
  28. URI createedURI = uriInfo.getBaseUriBuilder().path(book.getId().toString()).build();
  29. return Response.created(createedURI).build();
  30. }
  31.  
  32. @GET
  33. @Produces(APPLICATION_JSON)
  34. public Response getBooks() {
  35. List<Book> books = bookRepository.findAll();
  36.  
  37. if(books.size() == 0) {
  38. return Response.noContent().build();
  39. }
  40. return Response.ok(books).build();
  41. }
  42.  
  43. @GET
  44. @Path("/{id: \\d+}")
  45. @Produces(APPLICATION_JSON)
  46. public Response getBook(@PathParam("id") @Min(1) Long id) {
  47. Book book = bookRepository.find(id);
  48.  
  49. if(book == null) {
  50. return Response.status(Response.Status.NOT_FOUND).build();
  51. }
  52.  
  53. return Response.ok(book).build();
  54. }
  55.  
  56. // api/books/count
  57. @GET
  58. @Path("/count")
    @Produces(PLAIN_TEXT)
  59. public Response countBooks() {
  60. Long nbOfBooks = bookRepository.countAll();
  61.  
  62. if(nbOfBooks == 0) {
  63. return Response.noContent().build();
  64. }
  65.  
  66. return Response.ok(nbOfBooks).build();
  67. }
  68.  
  69. @DELETE
  70. @Path("/{id : \\d+}")
  71. public Response deleteBook(Long id) {
  72. bookRepository.delete(id);
  73. return Response.noContent().build();
  74. }
  75. }

[JavaEE] Implement a REST Endpoint的更多相关文章

  1. [JavaEE] Implement a test for REST endpoint

    1. We have the BookEndpoint.java: package com.pluralsight.bookstore.rest; import com.pluralsight.boo ...

  2. Service Station - An Introduction To RESTful Services With WCF

    Learning about REST An Abstract Example Why Should You Care about REST? WCF and REST WebGetAttribute ...

  3. Service Discovery in WCF 4.0 – Part 2 z

    Service Discovery in WCF 4.0 – Part 2 In the previous post I discussed about the basic usage of WCF ...

  4. Service Discovery in WCF 4.0 – Part 1 z

    Service Discovery in WCF 4.0 – Part 1 When designing a service oriented architecture (SOA) system, t ...

  5. JavaEE路径陷阱之getRealPath

    转自:http://blog.csdn.net/shendl/article/details/1427637   JavaEE路径陷阱之getRealPath   本文是<Java路径问题最终解 ...

  6. 【JavaEE WEB 开发】Tomcat 详解 Servlet 入门

    转载请注明出处 :  http://blog.csdn.net/shulianghan/article/details/47146817 一. Tomcat 下载安装配置 1. Tomcat 下载 T ...

  7. Implement JSON Web Tokens Authentication in ASP.NET Web API and Identity 2.1 Part 3 (by TAISEER)

    http://bitoftech.net/2015/02/16/implement-oauth-json-web-tokens-authentication-in-asp-net-web-api-an ...

  8. [JavaEE] Injecting Bean

    So what is a Bean, in JavaEE, any class expect Entity are Bean. One usefully thing in Bean is Depend ...

  9. 【JavaEE WEB 开发】Tomcat 具体解释 Servlet 入门

    转载请注明出处 :  http://blog.csdn.net/shulianghan/article/details/47146817 一. Tomcat 下载安装配置 1. Tomcat 下载 T ...

随机推荐

  1. sql剪切数据

    实际项目当中用到的案例,个人笔记. USE [CA-SM]GO/****** Object:  StoredProcedure [dbo].[PG_SM_AddSum]    Script Date: ...

  2. JavaScript(十四)经典的Ajax

    (function(){ //唯一向外暴露一个顶层变量 var myajax = window.myajax = {}; //作者.版本号信息 myajax.author = "maxwel ...

  3. Android Error:Failed to resolve: com.afollestad:material-dialogs:

    背景: 同事把Android项目直接考给了我...我在Android Studio上运行,然后提示: Error:Failed to resolve: com.afollestad:material- ...

  4. org.apache.jasper.JasperException: javax.el.PropertyNotFoundException: Property [xxx] not readable on type [xxx]

    由于javaBean中的属性是custFullName,所以在使用jsp的时候,通过el表达式获取属性的值<td>${m.CustFullName}</td>.但是加载页面的时 ...

  5. ubuntu+ngnix+thinkphp pathinfo配置

    一.thinkphp 项目改为pathinfo模式 XXX/ThinkPHP/Conf/convention.php文件中找到 'URL_MODEL' => 1, // URL访问模式,可选参数 ...

  6. mongodb--命令练习

    windows10安装下载mongodb # 官网或镜像地址下载mongodb exe 二进制安装包 # 安装时选用custorm 去除勾选compass可视化工具 # 安装完成创建data文件,修改 ...

  7. UVA12118 Inspector's Dilemma(欧拉路径)

    题目: 某个国家有V(V≤1000)个城市,每两个城市之间都有一条双向道路直接相连,长度为T(每条边的长度都是T).你的任务是找一条最短的道路(起点和终点任意), 使得该道路经过E条指定的边.输出这条 ...

  8. Navicat for MySQL(Ubuntu)过期解决方法

    推荐购买正版软件,尊重版权  [官网在这里] Navicat for MySQL(Ubuntu系统)免费版试用过期解决方法: Step1. 直接删除 /home目录下的  .navicat文件夹(64 ...

  9. <SpringMvc>入门三 参数绑定

    1.get请求 <%--请求参数的绑定--%> <%--get请求参数--%> <a href="/param/testParam1?username=tom& ...

  10. 修改虚拟机中Linux的IP

    联网:ifup eth0 查看ip:ifconfig 点击编辑,选择NAT,子网ip修改第三字段为25,确定,重启linux后,会自动分配字段为25的ip 或者,也可以修改为自己想要的ip,如图:进入 ...