写点什么

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

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

关注

评论

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

人脸面部表情识别技术的挑战和未来发展

数据堂

几分钟上线一个应用,这个神器我爱了!

引迈信息

低代码 JNPF 办公神器

Web智慧化工三维可视化管理系统

2D3D前端可视化开发

三维可视化 工业组态 物联网系统 数字孪生技术 智慧化工

最近几年,国内好多家实体企业都开始用上低代码了,它有什么好?

优秀

低代码 数字化

数智时代的客服中心变革:从成本到价值

创智荟

数字化 大模型 客服 生产运营

API全场景零码测试机器人,华为云发布ATGen in CodeArts TestPlan

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 6 月 PK 榜

AI 协助办公 |记一次用 GPT-4 写一个消息同步 App

NebulaGraph

GPT

奇点云举办“数据进化论”数智科技大会,发布数据云七大场景

奇点云

业务场景 奇点云 数智科技大会

一分钟学会C4D与Blender做缝线的方法

Finovy Cloud

blender C4D

smartproxy印度住宅IP代理,帮助您的海外业务打造网络无障碍桥梁

摘星星的猫

华为云发布面向消费终端的企业云原生白皮书,开辟移动时代的云原生路径

脑极体

云原生

华为云FunctionGraph函数工作流—— “Serverless“遇见”AI,释放AI生产力

华为云PaaS服务小智

Serverless 华为云 A2M

[ABAQUS有限元分析]挤扩支盘桩支护基坑优化设计方法

思茂信息

abaqus abaqus软件 abaqus有限元仿真

英特尔PowerVia技术率先实现芯片背面供电,突破互连瓶颈

E科讯

如何用Smartproxy住宅代理IP抢购潮牌鞋子?住宅代理抢购限量款式

摘星星的猫

为什么说财务共享中心是财务转型的支撑

用友BIP

财务共享

自动驾驶≠速度与激情

白洞计划

自动驾驶

软件测试/测试开发丨学习笔记之Mark标记测试用例

测试人

程序员 软件测试 自动化测试 测试开发 测试用例

汇众智,奔涌向前赢未来 | 2023开放原子全球开源峰会 OpenAtom openEuler 分论坛即将启幕

开放原子开源基金会

开源 openEuler 开放原子全球开源峰会 开放原子

OpenYurt 即将亮相 EdgeX+OpenVINO 开发者生态大会

阿里巴巴云原生

阿里云 开源 云原生

昇腾实战丨DVPP媒体数据处理图片解码问题案例

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 6 月 PK 榜

用友荣获“2023年度上市公司数字化转型优秀案例”

用友BIP

软件测试/测试开发丨iOS App自动化测试

测试人

ios xcode 程序员 软件测试

推动开源与商业共生共赢 | 2023开放原子全球开源峰会开源商业化创新发展分论坛即将启幕

开放原子开源基金会

开源 开源商业化 开放原子全球开源峰会 开放原子

以AI为灯,照亮医疗放射防护监管盲区

飞桨PaddlePaddle

人工智能 深度学习 百度飞桨

AWS CodeWhisperer 上手初体验安装与使用

宇宙之一粟

Python 代码编辑工具 CodeWhisperer 6 月 优质更文活动

人才是企业决胜的关键,企业进行全球布局时,如何解决人才供应问题?

用友BIP

人力资源 数智人力

快手 Flink 的稳定性和功能性扩展

Apache Flink

大数据 flink 实时计算

活动预告 | 中国数据库联盟(ACDU)中国行定档深圳,一起揭秘数据库前沿技术

墨天轮

MySQL 数据库 oracle postgresql opengauss

window.performance(前端性能监控并进行上报)

不叫猫先生

Performance 6 月 优质更文活动

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