写点什么

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

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

关注

评论

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

用户路径地图

王一凡

云原生AI成过去式,AI原生的云才是通向未来的“藏宝图”

脑极体

「产品经理训练营0期」第八周作业

🌟

产品 产品经理训练营

产品 0 期 - 第八周作业

曾烧麦

产品训练营

this指向

y

this指针

产品经理第 0 期训练营第九周作业提交

Krystal

2021金三银四总结面试必备清单:字节/蚂蚁金服/腾讯/百度

比伯

Java 程序员 架构 互联网 技术宅

产品经理训练营 Week11 作业

Mai

Flink SQL 自定义 Source format

shengjk1

flink sql

systemedctl使用指南

happlyfox

3月日更

作业 - 第八章 数据分析

hao hao

maven项目下的重复依赖校验

程序员架构进阶

maven 持续集成 28天写作 3月日更 Jar包扫描

产品经理训练营第八章作业

新盛

API 工具链研发的理论基础 - 流派

李宇飞

工具链 API

你有没有领导力?

石云升

领导力 28天写作 职场经验 管理经验 3月日更

阿里混沌工程平台实践

心远

阿里巴巴 混沌工程

Kubernetes v1.21 新特性预览

倪朋飞

Kubernetes 云原生

用户路径地图+漏斗模型

mas

用户路径地图与漏洞模型

思亭

用户路径地图 漏洞模型

第八章作业-用户路劲图

z

ECMAScript 2018(ES9)新特性简介

程序那些事

JavaScript ecmascript 程序那些事 es9

数据分析

王一凡

架构师:始于理性思考,成于科学实践——郭东白老师分享总结

青春不可负,生活不可欺

成长 架构设计 架构师

用户路径地图+漏斗模型总结

mas

继承

y

继承

Vue中如何在线预览pdf文件

y

「架构师训练营 4 期」 第十二周 - 001&2

凯迪

架构师训练营 4 期

携手百度智能云推动实现工业AR空间智能化

百度大脑

AR 百度智能云

Android 系统开发做什么?

吴小龙同学

产品经理训练营 Week11 学习心得

Mai

第8周用户路径数据分析作业

skylar

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