【ArchSummit架构师峰会】基于大模型的基础框架、中台、应用层等专题全覆盖 >>> 了解详情
写点什么

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

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

关注

评论

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

找到适合自己的睡眠方案

石云升

生活方式 28天写作 睡眠 3月日更

思呓(2)

型火🔥

学习 架构 分布式 解耦

产品经理面试常见问题总结2

lenka

3月日更

2021十大区块链领域即将起飞

CECBC

区块链 投资

登陆用户身份获取

程序员架构进阶

架构设计 认证授权 28天写作 3月日更

uni-app跨端开发H5、小程序、IOS、Android(五):uni-app数据绑定

黑马腾云

html5 微信小程序 uni-app iOS Developer 3月日更

mybatis 添加日志功能

xiezhr

mybatis 日志

主流分布式文件系统总结

跳蚤

javax.imageio.IIOException: Unsupported Image Type

wjchenge

Gradle无法访问Nexus私服仓库-offline

wjchenge

Go Channel源码分析

非晓为骁

源码分析 channel Go 语言

产品训练营第八章作业

Arnold

谈兼职创业

Ryan Zheng

树集合总结

我是程序员小贱

3月日更

用户故事拆分速查手册(译)

Bruce Talk

敏捷 译文 Agile User Story

第11周课后练习-安全稳定

潘涛

架构师训练营 4 期

hive数据倾斜解决办法

五分钟学大数据

大数据 hive 28天写作 3月日更

数据仓库设计

大数据技术指南

大数据 28天写作 3月日更

产品训练营第八周作业——用户路径地图

innovator琳

用户研究 用户地图 用户数据 用户模型

线上问题的一点反思

风翱

复盘 3月日更 线上问题

从Nacos客户端视角来分析配置中心原理

麦洛

nacos SpringCloud Alibaba 动态配置

Wireshark数据包分析学习笔记Day18

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

《青春有你3》的子弹时间舞台,凝筑了自由视角技术进化史

脑极体

产品0期-第九周

Jxin

传统IT部门为什么越来越不受欢迎?

boshi

数字化转型 IT职场 七日更

在你所在的公司(行业、领域),正在用大数据处理哪些业务?可以用大数据实现哪些价值?

跳蚤

为何数字人民币要采用“小额匿名、大额可溯”的设计?

CECBC

数字货币

央行数字人民币“可控匿名”会侵犯隐私吗?最新解读来了

CECBC

数字货币

IO 模型

无心

Netty

一文搞定Diff算法

执鸢者

Vue 大前端 Diff

开源与商业产品

ES_her0

3月日更

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