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

jax-rs jax-ws_什么是JAX-RS注释?相关推荐

  1. java无线电台RS制信号_无线电台的RS制信号报告是由三两个部分组成的:

    题目内容: 无线电台的RS制信号报告是由三两个部分组成的: R(Readability) 信号可辨度即清晰度. S(Strength)    信号强度即大小. 其中R位于报告第一位,共分5级,用1-5 ...

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

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

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

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

  4. 2022年,我该用JAX吗?GitHub 1.6万星,这个年轻的工具并不完美

    来源:机器之心 本文约4600字,建议阅读10+分钟 你有在使用JAX吗? 近年来,谷歌于 2018 年推出的 JAX 迎来了迅猛发展,很多研究者对其寄予厚望,希望它可以取代 TensorFlow 等 ...

  5. DeepMind发布神经网络、强化学习库,网友:推动JAX发展

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 十三 发自 凹非寺 量子位 报道 | 公众号 QbitAI DeepMind今日发布了 ...

  6. Github 1.3万星,迅猛发展的JAX对比TensorFlow、PyTorch

    ©作者 | 机器之心编辑部 来源 | 机器之心 在机器学习领域,大家可能对 TensorFlow 和 PyTorch 已经耳熟能详,但除了这两个框架,一些新生力量也不容小觑,它就是谷歌推出的 JAX. ...

  7. 使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络

    使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络 本文例程部分主要参考官方文档. JAX简介 JAX 的前身是 Autograd ,也就是说 JAX 是 Autograd 升级版本 ...

  8. Github1.3万星,迅猛发展的JAX对比TensorFlow、PyTorch

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 J ...

  9. 前端如何开始深度学习,那不妨试试JAX

    一.简介 在深度学习方面,TensorFlow 和 PyTorch是绝对的王者.但是,但除了这两个框架之外,一些新生的框架也不容小觑,比如谷歌推出的 JAX深度学习框架. 1.1.快速发展的JAX J ...

  10. 『JAX中文文档』JAX快速入门

    最新的 原文:https://jax.readthedocs.io/en/latest/notebooks/quickstart.html JAX快速入门 首先解答一个问题:JAX是什么? 简单的说就 ...

最新文章

  1. ubuntu安装thrift
  2. 如何成为一家真正发挥大数据作用的 “数据驱动型公司”?
  3. Java对日期操作处理类
  4. 基于ServletJsp的网上书店设计(二)
  5. 硬件:断路器、接触器、继电器基础知识
  6. Struts2基础知识(二)
  7. Docker实践(七)部署SpringBoot微服务
  8. Cocos2d-3.x Android环境搭建
  9. Java将Word文档转换为PDF的完美工具
  10. 创建win10介质进度为0_win10介质创建工具(media creation tool)下载
  11. Codeforces Round #215 (Div. 2) B. Sereja and Suffixes map
  12. Yahoo 股票数据抓取
  13. 《产品经理认证(NPDP)知识体系指南》
  14. Linux C编程 —— 通过文件描述符获得文件路径
  15. 一、YouTube-8M 初探(视频与音频分类)
  16. 小学计算机老师毕业留言,高三老师给学生的毕业留言
  17. PDF文件怎么转换成PPT
  18. Monitor(管程)是什么意思?Java中Monitor(管程)的介绍
  19. Java面向对象01:什么是面向对象
  20. 新手如何利用电脑本地环境搭建网站(超详细)

热门文章

  1. 【学习笔记】浅谈广义矩阵乘法——动态DP
  2. 2021-4-4 省选模拟赛(灯,十字路口,密室逃脱)
  3. P4383 [八省联考 2018] 林克卡特树(wqs二分、树形dp)
  4. P3348-[ZJOI2016]大森林【LCT】
  5. 秀姿势(jzoj 3464)
  6. 【单调栈】Largest Rectangle in a Histogram(luogu-SP1805/poj 2559)
  7. 手机(jzoj 1983)
  8. 【DP】I Will Like Matrix!
  9. Java虚拟机必学之四大知识要点,附学习资料
  10. MySQL concat()函数