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

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

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

  • @Path注释和@PathParam
  • @QueryParamter批注
  • @Produces批注
  • @Consumes批注

在这一部分中,您将了解有关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批注注入HttpServletRequest或HttpHeaders实例的快捷方式。

@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的更多信息,那么这些文章将使您感兴趣:

  • Bean验证失败管理讨论了当输入数据完整性检查失败时如何处理对客户端的响应
  • 发现@ javax.ws.rs.core.Context 批注的所有用法
  • 使用@Consumes和@Produces批注 ,以及
  • JAX-RS资源实体讨论如何创建JAX-RS资源实体

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

什么是JAX-RS注释? (第3部分)相关推荐

  1. jax rs mysql_liferay7-rest开发JAX-RS规范详解

    简介 JAX-RS (JSR-311) 是为 Java EE 环境下的 RESTful 服务能力提供的一种规范.它能提供对传统的基于 SOAP 的 Web 服务的一种可行替代. 在本文中,了解 JAX ...

  2. jax rs mysql_Jersey / JAX-RS ExceptionMapper MySQL

    我正在学习Jersey / JAX-RS,我需要一些ExceptionMapper的帮助 . 我有一个UserFacade类,AbstractFacade类和User类本身,都非常标准,主要是通过在N ...

  3. jax rs mysql_JAX-RS示例(Jersey)

    我们可以通过 jersey 实现创建JAX-RS示例. 为此,需要加载 jersey相关jar文件或使用Maven框架. 在这个例子中,我们使用jersey jar文件来实现JAX-RS jersey ...

  4. 泽西岛/贾克斯RS:流式JSON

    大约一年前,我写了一篇博客文章,展示了如何使用Jersey / Jax RS流式传输HTTP响应 ,最近我想做同样的事情,但是这次使用JSON. 一种常见的模式是获取我们的Java对象并获​​取该对象 ...

  5. Drools 5.1.1(一)

    http://shikonglaike.iteye.com/blog/1236354 第一章欢迎 我总是和终端业务用户争论不休,理解规则和流程.最新规则和事件处理的区别.对此,在他们的意识中有这样的问 ...

  6. 【效率专精系列】善用API统一描述语言提升RestAPI开发效率

    团队内部RestAPI开发采用设计驱动开发的模式,即使用API设计文档解耦前端和后端的开发过程,双方只在联调与测试时耦合.在实际开发和与前端合作的过程中,受限于众多因素的影响,开发效率还有进一步提高的 ...

  7. python电影评价分析.dat_python读DAT - IT屋-程序员软件开发技术分享社区

    如果文件存在或者不存在,将文件打开为读/写的最佳方式是什么?然后创建并以读/写方式打开文件?从我读的, file = open('myfile.dat','rw')应该这样做,对吧? 它不适用于我(P ...

  8. ServiceComb场景及其原理

    文章目录 Java-Chassis核心源码 Consumer到Provider整体流程 @EnableServiceComb-初始化ServiceComb TransportManager-管理传输层 ...

  9. 必学Java类库/常用Java类库大全(awesome-java)

    完整资源地址:http://www.21doc.net/java/awesomejava 对象映射 简化对象映射的框架. Dozer - 使用注释,API或XML配置将数据从一个对象复制到另一个对象的 ...

  10. dropwizard框架学习

    Dropwizard: Overview: Dropwizard straddles the line between being a library and a framework. 跨越了库和框架 ...

最新文章

  1. 检测到你的手机处于root环境_选择群控系统的注意事项!繁星云手机盒子会比群控更合适好用吗!...
  2. day17——其他内置函数
  3. 计组—双端口与多模块存储器
  4. hive 日誌怎麼查看_Hive各个日志里都存放了什么信息?
  5. SQL SERVER 数据库面试题
  6. 在C7000+VMware vSphere5.5环境中的基础架构服务器部署实例
  7. MATLAB最基础的教程
  8. ADS20XX完全安装(任意盘)、卸载指南
  9. F-droid 源码片段(二)下载模块整理
  10. Discuz 模板目录
  11. 不知如何走的立交桥(西直门交警一文背景)
  12. 翟菜花:作为一个开发者 我为什么更看好搜索+小程序
  13. linux入侵检测工具之aide
  14. salesforce chatter 调查的相关内容
  15. 什么是“双重支付”,即“双花”
  16. git 回退远端master/develop分支版本
  17. 专访王威廉:NLP哪些研究方向更容易取得突破?
  18. 【Multisim仿真】有源低通滤波电路仿真
  19. 如何在Linux上部署web程序
  20. android 微信分身开发,【技巧】2021安卓手机微信分身方法

热门文章

  1. 汇编语言(二十二)之统计减去奇数的个数
  2. Redis进阶之主从复制
  3. Java IO: Reader和Writer
  4. java的for循环
  5. TS对象中的实例属性和静态属性
  6. 自动配置原理---SpringBoot
  7. 服务器登陆显示其他用户,连接远程服务器显示其他用户
  8. 解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误
  9. 控制语句(if-else+循环+switch)汇编规则
  10. openjdk-7支持版本_长期支持对OpenJDK意味着什么?