【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

Java EE 6 Web Services:JAX-RS 1.1 提供了基于注解的 REST 支持

  • 2010-02-14
  • 本文字数:1239 字

    阅读完需:约 4 分钟

JavaEE 6 规范提供了 Java API for RESTful Web Services(JAX-RS)支持,提供了基于 POJO 的框架以构建轻量级的 Web Services,该框架符合 REST(Representational State Transfer)风格的软件架构。JAX-RS 1.1 隶属于 JSR 311 ,其所提供的几个注解可用于将 Java 类的方法公开为 Web 资源。
JAX-RS 会自动进行 Java 类与 MIME 媒体类型之间的转换。比如说,如果通过注解“@Produces(MediaType.TEXT_PLAIN)”标记某个类方法,JAX-RS 则会将该 Java 类型转换为“text/plain”MIME 类型,这代表了普通文本,同时通过 HTTP 响应将该类型的内容发送给客户端。

Java EE 6 包含了 JAX-RS 的最新版,即 JAX-RS 1.1,该版本充分利用了 Java EE 6 的新特性,而 Jersey 则是 JAX-RS 规范开源的参考实现,Jersey 1.1.5 实现了 JAX-RS 1.1。

注解增加了一些额外的说明信息,可以标识资源并辅助处理 HTTP 请求。JAX-RS 所支持的一些注解列举如下:

Path:该注解为资源指定了一个相对路径。 @Path 所标识的 URI 路径用于资源类或是类方法处理请求所用。

GET @GET 所注解的方法用于处理 HTTP GET 请求。当客户端向代表某个 Web 资源的 URI 直接发送 HTTP GET 请求时,JAX-RS 运行时会调用被 @GET 所注解的方法来处理该 GET 请求。

POST @POST 所注解的方法用于处理 HTTP POST 请求。

Produces:该注解用于标识MIME 媒体类型,这样资源中的方法就会生成该类型的内容并返回给客户端。

Consumes @Consumes 注解用于标识 MIME 媒体类型,这表示了资源中的方法可以接受客户端所请求的类型。与 @Produces 注解一样,如果在类上指定了 @Consumes 注解,该注解就会应用到类中的所有方法;如果在某个方法上指定了 @Consumes 注解,那么它会覆盖类上所指定的 @Consumes 注解。

JAX-RS 还提供了其他一些方便的特性,比如基于参数的注解可以获得请求中的信息, @QueryParam , 就是这样一种注解,它可以从请求 URL 的查询字符串中获得查询参数。其他基于参数的注解还有 @MatrixParam ,它可以从 URL 路径的 segment 部分获取信息; @HeaderParam 可以从 HTTP 头中获得信息,而 @CookieParam 则可以从 cookie 相关的 HTTP 头中获得 cookie 信息。

还有不少辅助类和接口简化了 Java 中 RESTful Web Services 的构建和使用,列举如下:

  • MediaType 类可用于获取 MIME 媒体类型。该类的实例是不可变的。
  • UriInfo 是个接口,可以获取应用和请求的 URI 信息。
  • UriBuilder 能够获取 URI 模板信息,它可以从 URI 的各个组成部分来构建 URI。
  • Response 是个抽象类,代表了 HTTP 响应。在应用向运行时提供元数据时,它定义了返回实例与运行时之间的契约。应用中的类可以直接继承 Response 类,也可以使用其静态方法来通过 ResponseBuilder 创建实例。
  • Response.ResponseBuilder 用于构建 Response 对象,使用了 Builder 模式。

来自 JBoss 的 RESTEasy 框架也实现了 JAX-RS 规范。Apache 开源的服务框架 CXF 也在 2.3 版中提供了对 JAX-RS 1.1 的支持。

查看英文原文: Java EE 6 Web Services: JAX-RS 1.1 Provides Annotation Based REST Support

2010-02-14 07:133631
用户头像

发布了 88 篇内容, 共 258.1 次阅读, 收获喜欢 7 次。

关注

评论

发布
暂无评论
发现更多内容

聊一聊芯片上电复位和掉电检测

不脱发的程序猿

嵌入式 硬件开发 芯片上电 上电复位 掉电检测

Sentinel 常用流控算法

Z

sentinel 流控算法 服务监控 服务降级 流控

雪花算法,什么情况下发生 ID 冲突?

马丁玩编程

Java lua redis 雪花算法

针对各种指标数据如何选择合适的算法?

云智慧AIOps社区

技术 算法 数据 智能运维 指标

linux之iconv命令

入门小站

Linux

17. 关于超人工智能来临,霍金的忧虑

数据与智能

人工智能

链路压测中如何记录每一个耗时的请求

FunTester

性能测试 接口测试 测试框架 FunTester 链路压测

深入剖析 | XLSX海量数据复杂填充解决方案

九叔(高翔龙)

中间件 EasyExcel Apache POI java核心

手撸二叉树之翻转二叉树

HelloWorld杰少

9月日更

乘着汽车智能化的浪潮,“汽车人”的职业方向选择(二)

SOA开发者

程序员 软件 汽车 职业发展

架构实战营模块三作业

michael

#架构实战营

Supervisor 基础配置

耳东@Erdong

Supervisor 9月日更

linux系列之:告诉他,他根本不懂kill

程序那些事

Linux 命令 程序那些事 kill

命令行如何执行jar包里面的方法

FunTester

性能测试 反射 接口测试 测试框架 FunTester

还重构?就你那代码只能铲了重写!

小傅哥

Java 小傅哥 代码优化 代码重构 开发标准

MySQL事务学习笔记

风翱

MySQL 9月日更

网络攻防学习笔记 Day136

穿过生命散发芬芳

vpn 9月日更 恶意代码

枚举在 Golang 中的实现

baiyutang

Go 语言 9月日更

【Flutter 专题】46 图解新的状态管理 Provider (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

从特岗教师的需求金字塔,重新理解乡村、教育和科技

脑极体

怎样才能写好前端页面,css书写顺序和布局真的有那么重要吗

你好bk

CSS html 大前端 结构

WEB全屏API简介及示例

devpoint

web api 9月日更

“妈我不想去上课!”“不行你是老师!”

梦想橡皮擦

9月日更

架构实战训练营|作业|模块3

Frode

架构实战

hutool如何实现数据导出到Excel

卢卡多多

hutool 数据导出 9月日更

JavaScript 进阶(下)

Augus

JavaScript 9月日更

【LeetCode】寻找峰值Java题解

Albert

算法 LeetCode 9月日更

算法裁员,释放出了哪些“恶之花”?

脑极体

产品设计的几个原则

石云升

产品思维 产品思考 9月日更

在线JSON转sarcastic工具

入门小站

工具

镜子-或许我们也和Pod一样生活在虚拟世界

Lance

Java EE 6 Web Services:JAX-RS 1.1提供了基于注解的REST支持_Java_Srini Penchikala_InfoQ精选文章