速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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:133723
用户头像

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

关注

评论

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

从此脱离CRUD!Github热榜第三架构师速成手册成功颠覆了我的认知

Java你猿哥

架构 ssm 架构设计 架构师 微服务实战

阿里限量的性能调优+微服务+高并发设计,真的太香了!

做梦都在改BUG

Java 微服务架构 系统设计 性能调优 亿级并发

与全球开发者创新共赢,全球首个“开发者村” 正式落成

Geek_2d6073

合合信息新推出反光消除技术,助力手写文字识别更精准

合合技术团队

人工智能 文字识别 扫描全能王 反光去除

读书笔记丨远程服务调用和RESTful,如何分析和抉择?

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜 远程服务调用

终于可以彻底告别手写正则表达式了

Java你猿哥

Java ssm 表达式 GPT

一文详解多模态认知智能

华为云开发者联盟

人工智能 华为云 AIGC 华为云开发者联盟 企业号 4 月 PK 榜

亿级日活业务稳如磐石,华为云CodeArts PerfTest发布

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

HashData认证云原生数据仓库管理工程师培训报名开启!

酷克数据HashData

openEuler NFS+协议全新发布:实现NAS存储性能与可靠性倍增

openEuler

Linux 操作系统 存储 openEuler

爆肝Java九大核心专题,666页内容,我收割了5个大厂offer

Java你猿哥

Java MySQL JVM 消息队列

区块链基础设施 NFTScan 新增支持 Aptos 网络

NFT Research

区块链+ NFT

裸辞底气!GitHub飙升“java面试笔记2023” 了解下八股文天花板

Java你猿哥

Java 面试 Spring Boot ssm 八股文

【FAQ】关于JavaScript版本的华为地图服务Map的点击事件与Marker的点击事件存在冲突的解决方案

HarmonyOS SDK

HMS Core

那些关于DIP器件不得不说的坑

华秋PCB

插件 DIP 元器件 PCB PCB设计

设计模式的故事之三:责任链模式

Java你猿哥

Java 设计 ssm 责任链模式 责任链

聊聊 IP packet 的 TTL 与 tcp segment 的 MSL

明哥的IT随笔

TCP/IP TTL MSL

聊聊 Zookeeper 的 4lw 与信息安全

明哥的IT随笔

zookeeper 数据安全

YARN 远程代码执行(RCE)安全漏洞问题分析与解决方案

明哥的IT随笔

大数据 YARN 数据安全 RCE

人脸活体检测初识

六月的雨在InfoQ

人脸活体检测 三周年连更 人脸数据库 人脸辨识度

堡垒机英文是什么?有哪些品牌?

行云管家

网络安全 堡垒机

从源码全面解析LinkedBlockingQueue的来龙去脉

做梦都在改BUG

逆天!腾讯大神纯手撸“架构师速成手册”Github狂获4.5kstar

Java你猿哥

Java 架构 ssm 架构设计 架构师

本铯智能科技是家怎样的共享电动车厂家?

共享电单车厂家

共享电动车厂家 共享电单车厂商 本铯智能科技 本铯智能电动车厂家

阿里技术官神作!大厂亿级流量性能调优学习手册,堪称保姆级教学

做梦都在改BUG

Java 性能优化 性能调优

运维报表有哪些内容?有什么用?

行云管家

运维 报表 IT运维 容器化部署

为什么选择华为云CDN?这些案例告诉你

轶天下事

华为云CDN助力企业网速腾飞!

轶天下事

mac上好用的效率软件:Alfred 5 激活版

真大的脸盆

Mac Mac 软件 效率软件

算法题每日一练: 青蛙跳台阶

知心宝贝

数据结构 算法 前端 后端 三周年连更

Spring Boot 整合 Redis 基于 Stream 消息队列 实现异步秒杀下单

Java你猿哥

Java redis stream ssm 消息队列

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