写点什么

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

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

关注

评论

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

Github瞬间爆火!被各大厂要求直接下架的面试题库也太全了

Java 编程 程序员 架构 面试

为打造更好移动生态:日活超1.2亿的百度知道,摊牌了

ToB行业头条

百度 百度知道

MySQL高可用架构:mysql+keepalived实现

AI乔治

Java MySQL 架构 高可用架构 keepalive

一枚比特币变换一台车,特斯拉与比特币还要绑定多久?

CECBC

特斯拉

收藏!阿里P9耗时28天,总结历年亿级活动高并发系统设计手册

Java架构师迁哥

爆肝1W+字,通俗易懂的讲解下Java注解

AI乔治

Java 架构 面试 注解

答对这八个Redis的问题,说明你精通了

AI乔治

Java redis 架构 分布式 高并发

别让心里的墙,挡住了你未来的路

小天同学

思考 认知提升 认知 4月日更

京东首席架构师深邃洞察:服务化+云原生+微服务

Java架构师迁哥

架构师必经之路!Github榜首Java代码优化:77案例+28技巧开源分享

Java架构师迁哥

强化区块链技术在数字政府、智慧城市、智能制造等领域应用

CECBC

人工智能

你公司有没有企业文化?

石云升

团队建设 28天写作 职场经验 管理经验 4月日更

什么是低代码开发?低代码11大核心功能介绍!

优秀

低代码

周转箱在仓配业务中的应用

Geek_vidmje

前端工程化-webpack

chun1123

大前端 webpack

对于医疗健康行业,区块链最大的价值在哪里?

CECBC

医疗

工行首次全面展示数十项数字人民币研发试点成果

CECBC

数字人民币

面试别慌!阿里专家带你从【入门+基础+进阶+项目】攻破SpringBoot

Java架构师迁哥

道相同、谋相通、人相守:华为副总裁周跃峰分享如何与用户精英共创数字基建

脑极体

ElasticSearch

云淡风轻

elasticsearch

MySQL主从不一致情形与解决方法

AI乔治

Java MySQL 架构 主从同步

全面复盘B站面试时坑我最深的Java并发:JDK源码剖析

Java架构师迁哥

为什么区块链技术仍然被人们认为当成一个投机的工具?

CECBC

小技巧 | 帮助运营小姐姐批量修改文件名的几种方式

梁龙先森

Node 脚本 PowerShell

网络协议学习笔记 Day6

穿过生命散发芬芳

网络协议 4月日更

开源新老兵携手打开社区大门,带大学生走近开源

DT极客

聪明人的训练(二十七)

Changing Lin

4月日更

电脑护眼不权威指南,年纪轻轻眼睛就不行了?

彭宏豪95

效率 windows 4月日更 护眼

深入浅出解读SpringMVC 进阶版

AI乔治

Java spring 架构 微服务 springmvc

如何在 Spring/Spring Boot 中优雅地做参数校验?

JavaGuide

Java spring springboot

Dubbo学习笔记

风翱

dubbo 4月日更

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