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

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 ,查询参数是keywordlimit ,查询值是Java10 。 要获取这些值,请使用@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

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

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

相关文章

eclipse 快捷键组合

更多快捷键组合可在Eclipse按下ctrlshiftL查看。 让我们按照使用频率来看看我最爱用的一些热键组合。&#xff08;注&#xff1a;以下内容在Eclipse3.02及一上版本通过测试&#xff09; 1. Control-Shift-T: 打开类型&#xff08;Open type&#xff09;。如果你不是有意磨洋工…

java实体类转map_十五道经典面试题-JAVA基础篇

十五道JAVA基础面试题送给有需要的童鞋&#xff0c;但是不得不多提醒一句&#xff0c;打铁还需自身硬&#xff0c;计算机软件这个行业&#xff0c;技术和学历才是王道。好了&#xff0c;废话不多说&#xff0c;上菜&#xff1a;一&#xff1a;面向对象的特征有哪些方面 1. 抽象…

C++ 指针函数和函数指针

1、指针函数 &#xff08;1&#xff09;基本概念 指针函数&#xff1a;顾名思义就是带有指针的函数&#xff0c;即其本质是一个函数&#xff0c;只不过这种函数返回的是一个对应类型的地址。 &#xff08;2&#xff09;定义式 type *func(type , type) 如&#xff1a;int…

B树

B树是为磁盘或其他直接存储的辅存设备而设计的一种平衡搜索树。 B树类似于红黑树&#xff0c;但在降低磁盘I/O操作数方面要更好一些。许多数据库系统使用B树或者B树的变种来存储信息。 B树与红黑树的不同之处在于B树的结点可以有很多孩子&#xff0c;从数个到数千个。也就是说&…

如何使用recaptcha_在Spring MVC Web应用程序中使用reCaptcha

如何使用recaptchaCAPTCHA是一个程序&#xff0c;可以生成人类可以通过但计算机程序“ 不能 ”通过的测试并对其进行评分。 所采取的策略之一是向用户显示具有扭曲文本的图像&#xff0c;并且用户应在输入区域中书写文本。 如果显示的文字与用户输入的文字相同&#xff0c;则我…

micropython esp8266教程_(一)ESP8266/nodemcu如何使用MicroPython进行开发

简介 大家都知道ESP8266&#xff08;nodemcu&#xff09;可以使用arduino的语法&#xff08;C&#xff09;进行开发&#xff0c;也有些小伙伴可能也知道可以使用lua语言进行开发的。但是现在我们也可以使用python来开发esp8266&#xff08;nodemcu&#xff09;了。那么这篇教程…

PostGIS之路——几何对象编辑(二)

1、ST_Reverse返回几何对象顶点顺序相反的几何对象。geometry ST_Reverse(geometry g1);示例SQL&#xff1a;SELECT ST_AsText(the_geom) as line, ST_AsText(ST_Reverse(the_geom)) As reverselineFROM(SELECT ST_MakeLine(ST_MakePoint(1,2),ST_MakePoint(1,10)) As the_geom…

C++ cin.sync()和cin.ignore()

cin.sync()的功能是清空缓冲区&#xff0c;而cin.ignore()虽然也是删除缓冲区中数据的作用&#xff0c;但其对缓冲区中的删除数据控制的较精确。 有时候你只想取缓冲区的一部分&#xff0c;而舍弃另一部分&#xff0c;这是就可以使用cin.ignore()&#xff0c;其使用方法是&…

Spring Data对Cassandra 3的支持

名为Ingalls的新Spring Data发布火车的发布引起了我的关注&#xff0c;其中之一是Spring Data Cassandra最终支持Cassandra 3。 因此&#xff0c;我回顾了我的一个旧样本&#xff0c;并尝试了较新版本的Cassandra。 安装Cassandra 第一步是安装本地版本的Cassandra&#xff0c…

第12秒做视频封面:阿里云视频截帧功能

代码&#xff1a; <video src"http://ruilai-course.imreliable.net/fangcao_course/{{results.VideoName}}.mp4"poster"http://ruilai-course.imreliable.net/fangcao_course/{{results.VideoName}}.mp4?x-oss-processvideo/snapshot,t_12000,f_jpg,w_750,…

winform什么时候会调用closed事件_async/await 给程序带来了什么?

如果说async给ASP.NET带来的是处理能力的提高&#xff0c;那么在WinForm中给程序员带来的好处则是最大的。我们再也不用因为要实现异步写回调或者绑定事件了&#xff0c;省事了&#xff0c;可读性也提高了。不信你看下面我们将调用我们那个web service的代码在.NET4.5下实现一下…

Vtk出现Generic Warning时

Generic Warning: In D:\ProgramFiles\VTK\VTK-7.0.0\Rendering\Core\vtkPolyDataMapper.cxx, line 28 Error: no override found for ‘vtkPolyDataMapper’. Warning: In D:\ProgramFiles\VTK\VTK-7.0.0\Rendering\Core\vtkInteractorStyleSwitchBase.cxx, line 43 vtkInte…

Properties 持久的属性集

特点&#xff1a;1、Hashtable的子类&#xff0c;map集合中的方法都可以用。2、该集合没有泛型。键值都是字符串。3、它是一个可以持久化的属性集。键值可以存储到集合中&#xff0c;也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。 // 根据ke…

MySQL的简单使用

一&#xff0c;MySQL的使用 (1)启动MySQL服务&#xff08;DOS下输入&#xff09;net start mysql / 停止服务net stop mysql&#xff0c;其中mysql是你的数据库服务器的名字。 (2)登录MySQL:mysql -h localhost -u root -p回车后输入你的数据库登录密码。 出现如上图的信息说…

错误C4996:'std :: _Copy_impl'

编译示例程序时出现 错误C4996&#xff1a;std :: _Copy_impl&#xff1a;使用可能不安全的参数的函数调用(error C4996: std::_Copy_impl:Function call with parameters that may be unsafe) 在于处理器中添加 _SCL_SECURE_NO_WARNINGS

python编程口诀_科学网—Python编程技巧汇总 - 高关胤的博文

正在学习python编程&#xff0c;把一些小技巧记录下来备查 计算技巧 正常的条件语句如下if a>b:caelse:cb 可以写为以下简洁的语句a100b200ca if a>b else bprint(c) 作图 python中可以使用numpy的array来高效处理数组 下面主要列举matplotlib的基本使用方法&#xff0c;…

jsf标签p:ajax_JSF AJAX请求的会话超时处理

jsf标签<p:ajax>JSF AJAX请求的会话超时处理 当我们使用AJAX行为开发JSF应用程序时&#xff0c;在处理Ajax请求的超时情况时&#xff0c;我们可能会遇到问题。 例如&#xff0c;如果您使用的是基于J2EE Form的身份验证&#xff0c;则会话超时后应将正常请求重定向到登录页…

使用javamail发信过程中的一些问题及解决方法

今天在研究javamail发信的过程中&#xff0c;出现了一些小问题&#xff0c;现总结如下&#xff0c;以免后来者走些不必要的弯路&#xff0c;先把完整的能够正常运行的代码示例粘贴如下&#xff1a; 发邮件源代码&#xff1a; package com.hyq.test; import java.util.Propertie…

VIsual Studio编译OpenCV:无法打开python27_d.lib(python36_d.lib)的问题

在用 VS2015 编译 Debug 版的 openCV 源码时&#xff0c;最后一步生成 INSTALL&#xff0c;碰到了下面问题&#xff1a;因为配置 Windows 版 caffe 的需要&#xff0c;我先安装了一个 Anaconda3&#xff08;3.6版本&#xff09;&#xff0c;caffe 最高支支持到 3.5 &#xff0c…

python做硬件自动化测试仪器_基于Python PyVisa和GPIB的硬件测试仪器控制方法

基于Python和GPIB的硬件测试仪器控制方法 背景 在物联网通信时代&#xff0c;嵌入式模块开发越发广泛&#xff0c;自动化测试成为大家老生常谈的话题。对于一些高精度仪器&#xff0c;我们知道它是用GPIB控制用来测试&#xff0c;也希望可以通过一个程序实现自动化控制&#xf…