写点什么

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

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

关注

评论

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

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十三)编写测试-并行测试

编程道与术

Java 编程 TDD 单元测试 JUnit

JavaScript中删除树形结构数据里的节点

AR7

Java

【喜迎端午】够强大,才够出“粽”,加入InfoQ写作平台,领取节日限定头像标识

InfoQ写作社区官方

写作平台 端午节 热门活动

架构师训练营第2周作业

在野

极客大学架构师训练营

无抽象不架构

菜根老谭

架构 抽象 架构思维 抽象思维

依赖倒置

陈皮

第二周作业

LEAF

架构师训练营-W02H-架构设计

赤色闪电

极客大学架构师训练营

架构师训练营第二周课后作业

竹森先生

极客大学 极客大学架构师训练营

架构师训练营 第二周作业

fujin

极客大学架构师训练营

架构师训练营作业

Hanson

架构师训练营 - 第二周学习总结

hellohuan

极客大学架构师训练营

架构师训练营第二周总结

Hanson

架构师训练营 No.2 周作业

连增申

【week02】总结

chengjing

第二周总结

LEAF

架构师训练营第二周作业

路人

架构第二周-学习总结

J.Smile

极客大学架构师训练营

「架构师训练营」第 2 周学习总结

guoguo 👻

极客大学架构师训练营

架构师训练营-第2课总结-20200613-软件设计

👑👑merlan

架构总结 软件设计

Spring BeanPostProcessor 你不能不知道的事

CoderLi

Java spring 程序员 源码分析 后端

架构师训练营-W02S-架构设计

赤色闪电

极客大学架构师训练营

依赖倒置原则

清风明月

极客大学架构师训练营

第二章总结

大雄

第二周总结

Thrine

【week02】作业

chengjing

「架构师训练营」第2周作业

fujin

ioc 极客大学架构师训练营 第二周作业

第二周 - 作业

Happy-Coming

游戏夜读 | 中国移动游戏简史

game1night

Netty4.x的Channel相关类图及分析

娄江国

架构师第二周课后作业

傻傻的帅

极客大学架构师训练营

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