限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

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

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

关注

评论

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

IoTDB 探索季活动|大疆无人机等你来拿

Apache IoTDB

【DevOps系列】需求的层次结构:业务驱动的协作与产品导向的交付

嘉为蓝鲸

DevOps 需求分析

豆包MarsCode Agent 登顶 SWE-bench Lite 评测集

TRAE

AI

java和前端,选哪个好点?

秃头小帅oi

0基础真的能学会java吗?

伤感汤姆布利柏

如何妥善处理 TCP 代理中连接的关闭

不在线第一只蜗牛

网络协议 网络

【DevOps系列】DevOps工具链选型指南

嘉为蓝鲸

DevOps 工具链

【DevOps系列】DevOps全过程质量管控

嘉为蓝鲸

DevOps

浅谈inBuilder中元数据的灰度更新方案

inBuilder低代码平台

低代码 元数据 低代码中的元数据

附演讲视频|隐语城市行·北京站:行业发展趋势、大模型前沿技术、实践落地案例干货打包

隐语SecretFlow

80%腾讯程序员都在用,腾讯云AI代码助手让编码提效42%

科技热闻

【DevOps系列】CICD流程建设之持续集成实践指南

嘉为蓝鲸

DevOps 持续集成 CI/CD

【核电科技企业】构建一体化服务器智能运维平台,助力降本增效

嘉为蓝鲸

AIOPS 运维‘ 一体化运维

【DevOps系列】CICD流程建设之警惕反模式

嘉为蓝鲸

DevOps CI/CD 反模式

场景题:百万数据插入Redis有哪些实现方案?

王磊

lazada 商品详情 API 的获取与应用

科普小能手

API 接口 API 测试 lazada商品评价接口 lazada API接口 lazada API

如何炼就 AI 原住民的“自我修养”丨通义灵码走进北京大学创新课堂

阿里云云效

阿里云 云原生 通义灵码

如何炼就 AI 原住民的“自我修养”丨通义灵码走进北京大学创新课堂

阿里巴巴云原生

阿里云 云原生 通义灵码

软件测试学习笔记丨Selenium弹窗操作

测试人

软件测试

喜报!博睿数据再获“信创工委会技术活动单位”称号

博睿数据

2024 OPPO开发者大会召开,携手火山引擎加速迈进AI语音交互新时代

新消费日报

iPaaS 平台在企业中的定位及集成方式

RestCloud

API网关 应用集成 ipaas api可视化编排

从云原生到 AI 原生,网关的发展趋势和最佳实践

阿里巴巴云原生

阿里云 云原生 网关

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