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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

csp-c模拟测试43「A·B·C」

B 题解 $f[i][(gcd(prime[j]*prime[k]\%P,P))]\sum\limits_{k1}^{k<num} f[i-1][k]*phi(\frac{P}{prime[j]})$ 关于$phi(\frac{P}{prime[j]})$理解 $phi(\frac{P}{prime[j]})$是求$prime[j]$代表的数的个数 $Pk_0*prime[j]$ $x_1k_1*prime[j]$ $x_2k_2*prime[j]$ ....... 要…

小甲鱼python全部视频_小甲鱼全套教程之Python系列视频教程

Python 当前位置&#xff1a;主页 > 编程教程 > Python > 小甲鱼全套教程之Python系列视频教程 小甲鱼全套教程之Python系列视频教程 教程大小&#xff1a; 发布时间&#xff1a;2015-04-18   下载次数&#xff1a;次 本套小甲鱼全套教程之Python系列视频教程是比较…

如何有效开展小组教学_高效课堂 有效教学 | 教育部专家到徐州市第三中学开展教研活动...

原标题&#xff1a;高效课堂 有效教学 | 教育部专家到徐州市第三中学开展教研活动前言2020年12月1日&#xff0c;教育部基础教育课程教材发展中心徐州调研暨徐州市2020年高中语文教师“深度学习”研讨活动、徐州市2020年高中化学骨干教师“三新”培训在徐州市第三中学举办。参加…

技术管理角色认知-管理都需要做哪些事

背景 即管理的具体形式&#xff0c;关于what的问题&#xff1f;管理到底要做哪些事情&#xff1f; 派别定义说明过程管理是5个要素组成的一种普遍的人类活动&#xff0c;这5个要素是&#xff1a;计划&#xff0c;组织&#xff0c;指挥&#xff0c;协调&#xff0c;控制亨利法约…

带哨兵节点的链_HBA公链 | IPFS:区块链“不可能三角”的可能解

你知道区块链中的“不可能三角”吗&#xff1f;即区块链无法同时达到可扩展性&#xff08;Scalability&#xff09;、去中心化&#xff08;Decentralization&#xff09;和安全&#xff08;Security&#xff09;。这三个要素中只能同时兼顾两个&#xff0c;比如&#xff0c;要想…

python实现微信小程序的接口自动化_appium+python自动化56-微信小程序自动化(摩拜为例)...

前言 最近微信的小程序越来越多了&#xff0c;随之带来的问题是&#xff1a;小程序如何做自动化测试&#xff1f; 本篇以摩拜小程序为例&#xff0c;介绍如何定位小程序里面的元素 运行环境&#xff1a; android 7.0 appium v1.7.1 webview进程 1.小程序和微信公众号还不太一样…

swingworker_使用SwingWorker的Java Swing中的多线程

swingworker如果要使用Swing用J​​ava编写桌面或Java Web Start程序&#xff0c;您可能会觉得需要通过创建自己的线程在后台运行某些程序。 没有什么可以阻止您在Swing中使用标准的多线程技术&#xff0c;并且需要遵循通常的注意事项。 如果有多个线程访问相同的变量&#xf…

指定端口传输_一段话告诉你什么是端口

1、端口的含义端口是指接口电路中的一些寄存器&#xff0c;这些寄存器分别用来存放数据信息、控制信息和状态信息&#xff0c;相应的端口分别称为数据端口、控制端口和状态端口。电脑运行的系统程序&#xff0c;其实就像一个闭合的圆圈&#xff0c;但是电脑是为人服务的&#x…

loop在python中什么意思_python中迭代什么意思

1、迭代&#xff1a; 迭代是通过重复执行的代码处理相似的数据集的过程&#xff0c;并且本次迭代的处理数据要依赖上一次的结果继续往下做&#xff0c;上一次产生的结果为下一次产生结果的初始状态&#xff0c;如果中途有任何停顿&#xff0c;都不能算是迭代。例如&#xff1a;…

使用Spring Data的Apache Ignite

Spring Data提供了一种统一而简单的方法来访问不同类型的持久性存储&#xff0c;关系数据库系统和NoSQL数据存储。 它位于JPA之上&#xff0c;添加了另一层抽象并定义了基于标准的设计以在Spring上下文中支持持久层。 Apache Ignite IgniteRepository实现了Spring Data CrudR…

js hover图片放大不遮挡_CSS3+JS 实现放大镜

注意&#xff1a;看懂本文需要&#xff1a;懂中文 &#xff1a;)学习过 JavaScript 和 css代码较长&#xff0c;框框可左右滑动哦您的观看和点赞是对本公众号最大力的支持 ~~原文链接&#xff1a;https://blog.csdn.net/qq_43624878/article/details/110197749 CSS3JS完美实现放…

python装饰器class_Python中的各种装饰器详解

Python装饰器&#xff0c;分两部分&#xff0c;一是装饰器本身的定义&#xff0c;一是被装饰器对象的定义。 一、函数式装饰器&#xff1a;装饰器本身是一个函数。 1.装饰函数&#xff1a;被装饰对象是一个函数 [1]装饰器无参数&#xff1a; a.被装饰对象无参数&#xff1a; &g…

odoo controller 继承

方式一&#xff1a; 继承基类&#xff0c;直接重写方法 from odoo.addons.web.controllers.main import Exportclass PsExport(Export): http.route(/web/export/get_fields, typejson, auth"user") def get_fields(self, model, prefix, parent_name , import_co…

python字符串startswith_Python 字符串 startswith() 使用方法及示例

Python 字符串 startswith() 使用方法及示例如果字符串以指定的前缀(字符串)开头&#xff0c;则startswith()方法将返回True。如果不是&#xff0c;则返回False。startswith()的语法为&#xff1a;str.startswith(prefix[, start[, end]])startswith()参数startswith()方法最多…

odoo连接外部数据库

odoo框架默认的访问时Postgres数据库&#xff0c;但在实际的应用场景中&#xff0c;不可避免的使用到其他数据库&#xff0c;所以有必要研究如何连接其他第三方数据库&#xff0c;这里分享下OCA的相关模块&#xff0c;具体的源代码在这里。 我将第三方的数据库需要连接的情况汇…

整型和bcd的对应关系_微信与多闪之争背后,好友关系链到底是如何窃取的?

这几天从发布到全面推广&#xff0c;多闪已经快速的超越100万用户&#xff0c;迅速占领了appsotre榜首&#xff0c;在七麦数据中也是蝉联第一。但因多闪包括头条产品登录采取都支持【微信第三方登录】。很多用户都反馈是否自己的关系链被多闪、甚至是抖音窃取&#xff0c;并且腾…

线程同步,线程不同步_同步多线程集成测试

线程同步,线程不同步测试线程非常困难&#xff0c;这使得为被测多线程系统编写良好的集成测试非常困难。 这是因为在JUnit中&#xff0c;测试代码&#xff0c;被测对象和任何线程之间没有内置的同步。 这意味着&#xff0c;当您必须为创建并运行线程的方法编写测试时&#xff0…

ehcache 默认大小_简单的使用ehcache

ehcache是一个用Java实现的使用简单&#xff0c;高速&#xff0c;实现线程安全的缓存管理类库&#xff0c;ehcache提供了用内存&#xff0c;磁盘文件存储&#xff0c;以及分布式存储方式等多种灵活的cache管理方案。同时ehcache作为开放源代码项目&#xff0c;采用限制比较宽松…

JS定时器使用,定时定点,固定时刻,循环执行

本文概述&#xff1a;本文主要介绍通过JS实现定时定点执行&#xff0c;在某一个固定时刻执行某个函数的方法。比如说在下一个整点执行&#xff0c;在每一个整点执行&#xff0c;每隔10分钟定时执行的方法。 JavaScript中有两个定时器方法&#xff1a;setTimeout&#xff08;&am…

axios 跨域_当遇到跨域开发时,我们如何处理好前后端配置和请求库封装

我们知道很多大型项目都或多或少的采用跨域的模式开发, 以达到服务和资源的解耦和高效利用. 在大前端盛行的今天更为如此, 前端工程师可以通过nodejs或者Nginx轻松搭建起web服务器.这个时候我们只需要请求后端服务器的接口即可实现系统的业务功能开发.这个过程中会涉及到web页面…