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

阅读数:4401 2013 年 6 月 9 日

话题:SOAREST语言 & 开发架构

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

XML 和 JSON

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

链接

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

类用于创建和保持链接,它采用Atom的链接定义方式,通过relhref属性去描述一个链接。当使用 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)关注我们,并与我们的编辑和其他读者朋友交流。