jax-rs jax-ws_什么是JAX-RS注释?

jax-rs jax-ws

JAX-RS概述(第1部分)

JAX-RS API构成了Java EE平台承诺提供标准驱动技术的重要组成部分。 互联网无处不在的性质以及对微服务体系结构的日益增长的兴趣已将更多的精力放在小型可扩展的自治服务及其互操作性上。 允许微服务彼此之间以及“外部世界”之间进行通信的主要方法是REST,它在开发RESTful API中的用途以及Java EE为此提供的技术是JAX-RS:RESTful Web Services的Java API

JAX-RS的目标

JAX-RS API的目标是:

  • 基于POJO
    提供与POJO一起使用的类/接口和相关批注的集合,以将其公开为Web资源。
  • 以HTTP为中心
    要将HTTP用作基础网络协议,并在HTTP和URI元素以及相应的API类和注释之间提供清晰的映射。
  • 格式独立
    适用于各种HTTP实体主体内容类型,并提供必要的可插入性以允许添加其他类型。
  • 容器独立性
    为了确保使用该API的工件可以部署在一系列Web服务器中。
  • 包含在Java EE中
    允许在Web资源类中使用Java EE功能和组件。

JAX-RS注释概述

JAX-RS API中的注释用于在Web资源周围提供元数据。 一个典型的示例是将@GET注释与@Path注释一起使用,以标识应处理对@Path注释中的指定URI的GET请求的方法。

接下来是对标记的快速概述,这些标记可用于标记用于构造Web资源的方法和类。 这不是一个详尽的列表,JAR-RS军械库中还有更多注释,但是由于JAX-RS的大部分工作是在配置和处理Web资源中,因此您可以在其中找到大部分已使用的API批注。

这是由三部分组成的系列文章中的第一个介绍JAX-RS批注的文章。

第二部分介绍:

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

第三部分介绍:

  • @FormParam批注
  • @MatrixParam批注
  • @CookieParam批注
  • @HeaderParam批注
  • @Provider批注

让我们开始吧。

@ApplicationPath批注

让我们从带有@ApplicationPath批注的树的顶部开始:

@ApplicationPath("/api")
public class RESTConfig extends Application {}

从这里开始定义资源的URI。 在这里,我们说所有的资源都可以在根目录/ api下找到 。 该URL应该如下所示: http:// localhost:8080 / webcontext / api / ,其中webcontext是您的应用程序的名称。

@Path注释

接下来,是资源的URI路径。 在书店应用程序中,它可能是/ books /

@Path("/books")
public class BookResource {}

现在,书籍资源的URI为/ api / books ,URL为http:// localhost:8080 / webcontext / api / books。 按照惯例,将资源命名为名词和复数形式。

一旦定义了我们的资源路径,就为HTTP方法和上下文类型配置了单独的资源方法。 这就是乐趣的开始。

每个HTTP方法都有一个注释。

@GET HTTP方法注释

具有@GET批注的方法批注响应HTTP get请求。

@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getAllBooks() {List<Book> books = BookRepository.getAllBooks(); // queries database for all booksGenericEntity<List<Book>> list = new GenericEntity<List<Book>>(books) {};return Response.ok(list).build();
}

请注意, GenericEntity包装器用于将List的通用类型维护为Book。

@POST HTTP方法注释

带有@POST注释的方法响应POST方法请求。

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response saveBook(Book book) {book = bookRepository.saveBook(book);return Response.ok(book).build();
}

POST HTTP方法通常用于创建资源。 此示例代码将新书对象保留在数据库中。

@PUT HTTP方法注释

@PUT批注用于更新记录,并以这种方式注释的方法响应HTTP PUT请求。

@PUT
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response updateBook(Book book) {book = bookRepository.updateBook(book);return Response.ok(book).build();
}

@DELETE HTTP方法注释

标有@DELETE的方法应删除资源。

@DELETE
@Path("{isbn}")
@Produces(MediaType.APPLICATION_JSON)
public Response deleteBook(@PathParam("isbn") String isbn) {Book book = bookRepository.deleteBookByIsbn(isbn);return Response.ok(book).build();
}

通常,如本例所示,资源或其ID从URI变量传递到资源方法参数。

@OPTIONS HTTP方法注释

用@OPTIONS注释的方法响应HTTP Option请求。

@OPTIONS
public Response preflight() {return Response.ok().header("Allow", true).build();
}

当客户端希望向其他域发出复杂的HTTP请求时,将options方法用作请求。 这样做是为了确定是否允许客户端提出请求。

@HEAD HTTP方法注释

HTTP HEAD方法与HTTP GET方法相同,除了服务器不得在响应中使用正文进行响应。

@HEAD
public Response headsUp() {return Response.ok().build();
}

此方法用于获取有关实体的元数据,而无需发回实体主体本身。

代码库

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

接下来是什么?

就是第一部分了,接下来是第二部分,您将在其中了解有关用于制作RESTful Web端点的注释的更多信息。

进一步阅读

我已经发表了更多有关JAX-RS的文章,希望您对此感兴趣:

  • JAX-RS 资源实体是有关创建资源实体的文章
  • 是否曾经想过@ javax.ws.rs.core.Context 批注是关于什么的?
  • 了解有关@Consumes和@Produces批注的更多信息,最后
  • 您无法在不了解Bean验证失败管理的情况下编写健壮的端点

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

jax-rs jax-ws

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

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

相关文章

计算机usb端口没反应,技术编辑教您电脑usb接口没反应怎么办

近来&#xff0c;有好多小伙伴反应有电脑USB接口不能使用的情况&#xff0c;鼠标键盘通通没反应。针对电脑usb接口没反应的问题&#xff0c;小编整理了常见的原因以及解决方法&#xff0c;希望能帮助你们解决问题USB是一个外部总线标准&#xff0c;用于规范电脑与外部设备的连接…

计算机二级access模考软件_计算机二级考前通关大礼包来啦!各科目模考软件、视频教程,更有往年真题、最新考纲等打包送!...

掐指一算&#xff0c;全国计算机二级就要开考了不知道大家准备的怎么样了&#xff1f;没准备&#xff1f;这个时候就该我出场了看看为大家精心准备的计算机二级考试的干货资源吧让你的考试一次pass&#xff01;本期资料包括计算机二级考试最新大纲计算机二级模考软件计算机二级…

foxpro 打印 字体_【部编版同步复习】16年级上册期中预测卷,可打印!

小语说&#xff1a;开学以后&#xff0c;不仅要认真学习&#xff0c;还要注意复习之前的知识点。小语给你们准备了小学语文部编版1-6年级每课一练&#xff0c;快来学习收藏。(点击下方蓝色字体查看完整版&#xff0c;可打印下载哦&#xff01;)点击蓝字标题 可查看相关内容电子…

查看数据库 MySQL 的版本信息的命令语句

文章目录一、mysql -V二、登录数据库后会显示版本信息三、mysqladmin -uroot -p version四、select version()五、命令 status六、show variables like %version%一、mysql -V [roothtlwk0001host ~]# mysql -V mysql Ver 14.14 Distrib 5.7.31, for Linux (x86_64) using E…

raii_Java中的RAII

raii资源获取即初始化&#xff08; RAII &#xff09;是Bjarne Stroustrup用C 引入的一种设计思想&#xff0c;用于异常安全的资源管理。 由于垃圾回收&#xff0c;Java 没有此功能&#xff0c;但是我们可以使用try-with-resources实现类似的功能。 约翰哈德斯&#xff08;Joh…

计算机应用基础本模块一测试,广东开放大学远程教育专科2018年秋计算机应用基础Word模块测试...

广东开放大学远程教育专科2018年秋计算机应用基础Word模块测试 (12页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;9.90 积分广东开放大学远程教育专科2018年秋计算机应用基础Word模块测试1. 撤销输…

蓝牙驱动卸载后自动安装_最热建筑安装工程计算表格,输入后自动生成,省时方便易上手...

最热建筑安装工程计算表格&#xff0c;输入后自动生成&#xff0c;省时方便易上手&#xff01;工程量计算是每一个造价从业者必备技能。但是要保证计算过程中不能有一丝丝差错&#xff0c;实在是一件令人头疼的事情&#xff0c;因为步骤比较繁杂&#xff0c;并且算量大&#xf…

ssm上传文件获取路径_SSM实现图片上传下载功能

0. 基本步骤框架搭建实现带图片上传的注册功能实现下载功能1. 框架搭建Step1 创建开发项目创建基础MVC包结构&#xff1a;controller、service、mapper、pojoStep2 导入jar包导入SpringMVC的jar、Spring的jar、MyBatis的jar、上传文件的jarStep3 配置文件配置applicationcontex…

Linux 目录详细说明

文章目录/usr/usr/bin/usr/lib/usr/share/usr/share/man/usr/share/doc/usr/share/zoneinfo/usr/local/usr/local/lib/usr/local/src/usr/src/usr/x11r6/usr/sbin/usr/include/usr/man & /usr/doc & /usr/info/bin/etc/etc/init.d/etc/xinetd.d/etc/X11/etc/rc.d/etc/p…

笔试知识点 网络安全_安全点

笔试知识点 网络安全安全点 Java应用程序中有两个逻辑线程组&#xff1a; 应用程序线程执行应用程序逻辑 执行GC的线程 在执行诸如堆压缩之类的操作时&#xff0c;GC线程会四处移动一些对象&#xff0c;并且这些对象不能被任何应用程序线程使用&#xff0c;因为它们的物理位…

51单片机做web服务器网页,基于51单片机的嵌入式web服务器

单片机 系统设计 编程维普资讯 http://doc.xuehai.net基于 5单片机的嵌入式 w b服务器 1 e基于 5单片机的嵌入式 we服务器 1 b刘东 (南交通大学电气工程学院 )西摘要本文设计实现了一个基于 5单片机的嵌入式 WE l B服务T P I议实现的嵌入式 WE C/P协 B服务器可以使各种家电设备…

stm32f4 hs 电路_电动机控制电路识图一看就懂

点击上方电工电气学习&#xff0c;关注并星标专业的电工电气领域自媒体&#xff0c;不容错过欢迎转发朋友圈&#xff0c;欢迎文末留言本书采用原理图与实物接线图一一对照的形式&#xff0c;讲述了常用机械设备、液位控制的水泵、小型机械设备、供排循环水泵等的电动机控制电路…

isnull mysql_mysql isnull用法讲解

mysql isnull用法讲解 MySQL 可以使用 ISNULL() 函数。不过它的工作方式与微软的 ISNULL() 函数有点不同。 我们先来看几个is null sql用法: select * from newtable where name is null //取得newtable表中name为null值的所有数据 select * from tbas_tablemysql isnull用法讲…

Linux 命令之 file 命令-识别文件类型

文章目录介绍语法格式常用选项参考示例&#xff08;一&#xff09;显示文件类型&#xff08;二&#xff09;显示符号链接的文件类型介绍 file 命令用来识别文件类型&#xff0c;也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型&#xff0c;而不是像…

服务器遍历文件夹不按顺序,绕过遍历检查 (Windows 10) - Windows security | Microsoft Docs...

跳过遍历检查04/19/2017本文内容适用范围Windows 10在比较 Windows 10 版本中了解有关每个 Windows 版本支持哪些特性和功能的详细信息。介绍"绕过遍历检查安全策略"设置的最佳方案、位置、值、策略 管理和安全注意事项 。参考此策略设置确定哪些用户 (或代表用户帐户…

迈克尔 杰克逊mv_杰克逊JSON解析错误– UnrecognizedPropertyException:无法识别的字段,未标记为可忽略[已解决]...

迈克尔 杰克逊mv在解析从我们的一个RESTful Web服务接收到的JSON字符串时&#xff0c;我收到此错误“线程“ main”中的异常com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException&#xff1a;无法识别的字段“ person”&#xff08;类Hello $ Person&#xff09;…

手机版wps怎么制作折线图_手机怎么制作电子签名?有没有手机电子签名软件或者APP?...

手机怎么制作电子签名&#xff1f;有没有手机电子签名软件或者APP&#xff1f;手机制作电子签名非常简单&#xff0c;当然也有移动版的电子签名软件或者APP。根据《电子签名法》第13条规定&#xff1a;电子签名同时符合下列条件的&#xff0c;视为可靠的电子签名&#xff1a;(一…

mysql查看主键别名_MySQL怎么查看约束的别名呢?

old神谕两种常用方法&#xff1a;① show index&#xff0c;其中key_name就是约束名SHOW INDEX IN table_name;(rootlocalhost) [test]> show index in a\G*************************** 1. row ***************************Table: aNon_unique: 1Key_name: idx_idSeq_in_ind…

Linux 命令之 less -- 分屏上下翻页浏览文件内容(查看文件内容/显示文件内容)

文章目录介绍语法格式常用选项浏览文本内容的快捷键向前滚屏向后滚屏跳跃搜索退出 less参考示例&#xff08;一&#xff09;查看文件&#xff08;二&#xff09;ps查看进程信息并通过less分页显示&#xff08;三&#xff09;查看命令历史使用记录并通过less分页显示&#xff08…

ajax.call失效无请求,移动端ajax请求问题?

我有两个问题&#xff0c;一个是我写了一个ajax请求&#xff0c;我想请求我本地服务器上的php文件&#xff0c;直接写本地路径和服务器路径时候&#xff0c;都会报错&#xff0c;告诉我需要跨域&#xff0c;于是我用jsonp去请求数据&#xff0c;写入的是服务器上的地址&#xf…