写点什么

Spring 对基于 REST 的 Web Services 增加 HATEOAS 支持

  • 2013-06-09
  • 本文字数:873 字

    阅读完需:约 3 分钟

Spring Framework 目前正在为超文本驱动的 REST web services 添加 HATEOAS (超媒体即应用状态引擎)支持。HATEOAS 主要专注于以类库的方式,为简化超媒体链接的创建,以及在和Spring(特别是Spring MVC)一起使用时对REST 资源表述进行装配提供API。

XML 和 JSON

该类库提供了一系列类型去简化 XML 和 JSON 的操作。

链接

Spring HATEOAS 类库提供了若干个类参与链接 (links) 和关联 (relations) 相关工作。

类用于创建和保持链接,它采用 Atom 的链接定义方式,通过 _rel_ 和 _href_ 属性去描述一个链接。当使用 XML 时, 链接将在 Atom 命名空间中呈现。

在创建 URI 字符串时,一个常见的​​问题是在代码中到处充斥着重复的字符串常量。_ControllerLinkBuilder_ 类解决了这个问题,它从当前请求的 URI 中提取基础 URI,然后将 Controller 类中的根路径映射添加到对应的资源中,从而组合成一个完整的 URI。

当资源以实体类的方式直接表述时,Spring HATEOAS 提供了类来为这些实体类型创建链接,使其指向一个集合类资源或单一的资源。

当使用超媒体时,查找某个特定关联的对应链接是很常见的。Spring HATEOAS 对此提供了 _LinkDiscoverer_ 类进行支持。

资源

Spring HATEOAS 包含了一个基类 ResourceSupport,当需要创建资源类时可以继承这个类。举个例子,它对链接提供了支持。

另一个基类 ResourceAssemblerSupport 有助于减少在实体和资源之间进行映射和为资源增加链接时所需的代码量。该类还能够建立单一的资源或资源集合。

Geraint Jones 基于一个简单的场景编写了一个使用 Spring HATEOAS 的例子

在JAX 2013 大会上, Martin Lippert 的“使用Spring 和JavaScript 的当代架构”的演讲中也包含了对Spring HATEOAS 的介绍。

Spring HATEOAS 类库目前处于 0.5 版本的阶段,并且正在为 0.6 版本继续努力着。

查看英文原文: Spring adds HATEOAS Support to REST Based Web Services


感谢赵震一对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-06-09 07:495217
用户头像

发布了 81 篇内容, 共 24.1 次阅读, 收获喜欢 5 次。

关注

评论

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

百家号基于AE的视频渲染技术探索

百度Geek说

视频 视频渲染

小程序表单组件-1

小恺

7月月更

大数据培训Spark数据倾斜问题的解决方法

@零度

spark 大数据开发

揭露数据不一致的利器 —— 实时核对系统

Shopee技术团队

数据分析 后端

天翼云携手华为,强强联合,共创数据存储新生态

天翼云开发者社区

存储 数字化

火眼金睛,天翼云助力打造城市视觉中枢

天翼云开发者社区

大数据 云平台

数据也能进超市

天翼云开发者社区

云计算 大数据 云平台

JAVA编程规范之命名风格

源字节1号

软件开发

2022年中国互联网医疗年度盘点

易观分析

互联网医疗

APISIX 如何与 Hydra 集成,搭建集中认证网关助力企业安全

API7.ai 技术团队

云原生 网关 身份验证 APISIX 网关

java零基础入门-多态

喵手

Java 7月月更

数据库审计部署方式有哪些?哪种比较好?

行云管家

数据库 数据库审计 数据库审计部署

数据库审计和日志审计的三大区别分析

行云管家

数据库 日志 日志审计 数据库审计

TiFlash 面向编译器的自动向量化加速

PingCAP

TiDB

阿里云第四届全球数据库大赛火热开赛,40万奖金广纳英才

科技热闻

关于微软 Edge 浏览器的 Tracking Prevention 特性在 Angular 应用中的影响

汪子熙

JavaScript typescript Web web开发 7月月更

项目进度管理和风险管理记录

老猎人

『51单片机』十分钟学会定时器

謓泽

7月月更

易观分析加入智能投研技术联盟,共促行业数智化发展

易观分析

易观新闻

Python|分析QQ群聊信息,记录词频并制作词云

AXYZdong

Python 7月月更

LeetCode-119. 杨辉三角II(java)

bug菌

Leet Code 7月月更

java培训如何防止 jar 被反编译

@零度

JAVA开发 jar被反译

leetcode 455. Assign Cookies 分发饼干(简)

okokabcd

LeetCode 数据结构与算法 贪心算法

大数据ZooKeeper(一):基本知识和集群搭建

Lansonli

大数据 zookeeper 7月月更

五个核心能力打造普惠金融商业化发展模式

易观分析

普惠金融

【愚公系列】2022年7月 Go教学课程 010-数据类型之布尔型和字符类型

愚公搬代码

7月月更

内行,阿里大牛离职带出内部“高并发系统设计”学习手册

程序知音

Java 阿里巴巴 程序员 后端 高并发

Python 入门指南之标准库概览

海拥(haiyong.site)

7月月更

一招,让停车管理不再难

天翼云开发者社区

数字化 云平台

大数据环境搭建:​​​​​​​​​​​​​​​​​​​​​Hadoop编译和分布式环境搭建

Lansonli

大数据 hadoop 环境搭建 7月月更

告别缺电焦虑!充电桩装上“智慧大脑”

天翼云开发者社区

云主机 云平台

Spring对基于REST的Web Services增加HATEOAS支持_SOA_Jan Stenberg_InfoQ精选文章