[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();
}
}
[JavaEE] Implement a REST Endpoint的更多相关文章
- [JavaEE] Implement a test for REST endpoint
1. We have the BookEndpoint.java: package com.pluralsight.bookstore.rest; import com.pluralsight.boo ...
- 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 ...
- 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 ...
- 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 ...
- JavaEE路径陷阱之getRealPath
转自:http://blog.csdn.net/shendl/article/details/1427637 JavaEE路径陷阱之getRealPath 本文是<Java路径问题最终解 ...
- 【JavaEE WEB 开发】Tomcat 详解 Servlet 入门
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/47146817 一. Tomcat 下载安装配置 1. Tomcat 下载 T ...
- 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 ...
- [JavaEE] Injecting Bean
So what is a Bean, in JavaEE, any class expect Entity are Bean. One usefully thing in Bean is Depend ...
- 【JavaEE WEB 开发】Tomcat 具体解释 Servlet 入门
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/47146817 一. Tomcat 下载安装配置 1. Tomcat 下载 T ...
随机推荐
- Selenium学习第二天,了解Selenium工作模式与学习Selenium需要具备的知识与工具。
Selenium学习网站: 1.http://www.ltesting.net/ceshi/open/kygncsgj/selenium/2014/0408/207237.html——好像是对API的 ...
- ARX亮显问题
转载一段acedSSSetFirst的用法仅供参考:打个比方,我创建了一个命令,这个命令的功能是提示用户选择,然后只过滤文本对象作为选择集,随后在屏幕上使得这个选择集的所有成员都亮显,并且能够显示出各 ...
- Mybatis逆向工程使用方法
使用官方网站的mapper自动生成工具mybatis-generator-core-1.3.2来生成po类和mapper映射文件. 一.mapper生成配置文件 在generatorConfig.xm ...
- 牛客多校Round 1
Solved:1 rank:249 E. Removal dp i,j表示前i个数删除了j个且选择了第i个的答案 类似字符串的dp 预处理一下nex i_k即i后面k第一次出现的位置 就好转移了 # ...
- 面向对象程序设计--Java语言第二周编程题:有秒计时的数字时钟
有秒计时的数字时钟 题目内容: 这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成.但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做 ...
- swift--字符串替换/过滤/切割
//替换 var ReplaceString = "http://www.aimonkey.cn"; var FilterReplace = ReplaceString.strin ...
- 以gnome-terminal为例,修改gnome3 的默认配置
gnome连续几个版本的terminal默认配置文件都是同一个配置文件“b1dcc9dd-5262-4d8d-a863-c897e6d979b9”.这是因为gnome的developers编辑了这个配 ...
- Linux学习笔记记录(二)
- openpyxl操作excel文件
https://blog.csdn.net/hunter_wyh/article/details/78498323
- java Beanutils.copyProperties( )用法
这是一篇开发自辩甩锅稿~~~~ 昨天测试小姐姐将我的一个bug单重开了,emmmm....内心OS:就调整下对象某个属性类型这么简单的操作,我怎么可能会出错呢,一定不是我的锅!!but再怎么抗拒,bu ...