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

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中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

你可能感兴趣的:(Spring对基于REST的Web Services增加HATEOAS支持)