什么是JAX-RS注释? (第3部分)

JAX-RS注释概述(第3部分)

这是一个由三部分组成的系列,介绍了用于实现REST端点的注释。

在JAX-RS批注的第二部分中,您了解了:

在这一部分中,您将了解有关JAX-RS批注的更多信息。 你准备好了吗? 让我们开始吧。

@FormParam批注

您可能需要直接从主体读取POST HTTP请求中发送的参数,而不是将其序列化为对象。 这可以通过使用@FormParam批注来完成。

@POST
@Produces(MediaType.APPLICATION_JSON)
public Response saveBookF(@FormParam("title") String title,
                          @FormParam("author") String author,
                          @FormParam("price") Float price) {
    return Response.ok(bookRepository.saveBook(new Book(title, author, price))).build();
}

@MatrixParam批注

矩阵参数是一组查询参数,用分号(而不是“&”号)分隔。 发生这种情况的原因是,这些值是从多个选择输入框中选择的,并且是通过GET请求而不是POST请求进行设置的。 该网址可能看起来像这样:

http://localhost:8080/api/books;author=atheedom;category=Java;language=english

注释@MatricParam用于从URI检索参数值并将其分配给方法参数。

@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getBookBy(@MatrixParam("author") String author,
                          @MatrixParam("category") String category,
                          @MatrixParam("language") String language) {
    return Response.ok(
            new GenericEntity<List<Book>>(
                    bookRepository.getBookBy(author, category, language)) {}).build();
}

@CookieParam批注

@CookieParam批注允许您将其直接注入到客户端发送的资源方法cookie中。 想象一下,您已经向客户发送了一个名为cartId的cookie,以便您可以跟踪客户的购物车。 要从HTTP请求中提取cookie,只需注释要向其分配cookie数据的方法参数。

@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getCart(@CookieParam("cartId") int cartId) {
    return Response.ok().build();
}

@HeaderParam批注

@HeaderParam批注用于将HTTP请求标头值注入资源方法参数。 您可以将其@Context使用@Context批注注入HttpServletRequestHttpHeaders实例的快捷方式。

@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getReferrer(@HeaderParam("referer") String referrer) {
    return Response.ok(referrer).build();
}

@Provider批注

提供程序用于通过更改运行时的行为来扩展和自定义JAX-RS,以实现一组目标。

提供程序有三种类型:

  • 实体提供者
    这种类型的提供程序控制数据表示形式(例如JSON和XML)到其对象等效项的映射
  • 上下文提供者
    这种类型的提供程序控制资源可以使用@Context批注访问的上下文
  • 例外提供者
    此类提供程序控制Java异常到JAX-RS Response实例的映射。

它们唯一的共同点是它们必须由@Provider批注标识,并遵循正确的构造函数声明规则。

代码库

本文的源代码位于我的GitHub存储库中 。 我所有文章的代码都在ReadLearnCode文章存储库中。

进一步阅读

如果您有兴趣阅读有关JAX-RS API的更多信息,那么这些文章将使您感兴趣:

翻译自: https://www.javacodegeeks.com/2017/08/jax-rs-annotations-part-3.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值