jax-rs jax-ws
JAX-RS注释概述(第2部分)
这是一个由三部分组成的系列,介绍了用于实现REST端点的注释。
在JAX-RS注释的第一部分中,您了解了:
- @ApplicationPath批注
- @Path注释
- @GET HTTP方法注释
- @POST HTTP方法注释
- @PUT HTTP方法注释
- @DELETE HTTP方法注释
- @OPTIONS HTTP方法注释
- @HEAD HTTP方法注释
在这一部分中,您将了解有关JAX-RS批注的更多信息。 准备好了吗?让我们开始吧。
再次使用@Path注释和@PathParam
我确信您已经注意到@Path
批注可用于resource方法,以进一步完善资源的位置。 在上面的示例中,路径被指定为@Path(“isbn”)
。 这称为路径变量,这意味着当对URI /api/books/1234
发出请求时,将检索路径变量1234
并将其分配给标有@PathParam
批注的方法参数。 因此,在代码段中,将值1234
分配给了变量isbn
。
@Path("{isbn}")
public Response aMethod(@PathParam("isbn") String isbn)
因此,在代码段中,将值1234分配给了变量isbn 。
@QueryParamter批注
查询参数是与?
后面附加到URL的键/值对关联的值?
符号。 例如,在URL http://localhost:8080/api/books/search? keyword=Java&limit=10
http://localhost:8080/api/books/search? keyword=Java&limit=10
,查询参数是keyword
和limit
,查询值是Java
和10
。 要获取这些值,请使用@QueryParam
批注,并将查询参数的名称作为值传递给批注,然后在resource方法中为响应对URI资源/ books / search的请求的方法参数进行批注。
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("search")
public Response searchBook(@QueryParam("keyword") String keyword, @QueryParam("limit") int limit) {List<Book> books = bookRepository.searchBook(keyword, limit);return Response.ok(new GenericEntity<List<Book>>(books) {}).build();
}
在上面的代码段中,将keyword
查询参数的值分配给方法参数keyword
,将limit
查询参数的值分配给limit
方法参数。
@Produces批注
@Produces
批注指定方法返回给调用方的媒体类型。
@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getAllNewBooks() {return Response.ok(new GenericEntity<List<Book>>(bookRepository.getAllNewBooks()) {}).build();
}
getAllNewBooks
方法能够以JSON或XML格式返回所有书籍的列表。 或者,媒体类型可以表示为字符串: “ application / json”和“ application / xml” 。
@Produces({"application/json", "application/xml"})
@Consumes批注
方法可以使用的媒体类型可以通过注释@Consumes指定。
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
该类型也可以指定为字符串值: “ application / json ”和“ application / xml ” 。
代码库
本文的源代码位于我的GitHub存储库中 。 我所有文章的代码都在ReadLearnCode文章存储库中。
接下来是什么?
第二部分就是这样,接下来是这个三部分系列的最后一部分。 您将了解有关更高级的注释的更多信息,这些注释有助于构建RESTful端点,包括:
- @FormParam批注
- @MatrixParam批注
- @CookieParam批注
- @HeaderParam批注
- @Provider批注
进一步阅读
我已经发表了更多有关JAX-RS的文章,希望您对此感兴趣:
- JAX-RS 资源实体是有关创建资源实体的文章
- 是否曾经想过@ javax.ws.rs.core.Context 批注是关于什么的?
- 了解有关@Consumes和@Produces批注的更多信息,最后
- 您无法在不了解Bean验证失败管理的情况下编写健壮的端点
翻译自: https://www.javacodegeeks.com/2017/08/jax-rs-annotations-part-2.html
jax-rs jax-ws