写点什么

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

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

关注

评论

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

加速数字经济发展,2022更需要云上创新的稳定器与推动力

脑极体

云原生训练营毕业总结

9527

【SpringCloud技术专题】「Gateway网关系列」微服务网关服务的Gateway全流程开发实践指南(2.2.X)

码界西柚

SpringCloud SpringCloud Gateway API Gateway 1月月更

低代码实现探索(十八)流程中参数的初始化设计

零道云-混合式低代码平台

2021年行摄回忆录

穿过生命散发芬芳

盘点2021 1月月更

没有区块链,就没有元宇宙

CECBC

虚拟数字人发展提速 多家银行宣布“造人”

CECBC

如何保证消息消费时的幂等性?

JavaEdge

1月月更

小白都能吃透 Java IOl 流,最骚最全笔记,没有之一!2️⃣

XiaoLin_Java

LabVIEW条形码识别(实战篇—5)

不脱发的程序猿

图像识别 机器视觉 图像处理 LabVIEW 条形码识别

ReactNative进阶(十七):RefreshControl 组件实现刷新效果

No Silver Bullet

1月月更 ReactNative RefreshControl

王者荣耀商城异地多活架构设计

ren

低代码实现探索(十九)低代码的意义

零道云-混合式低代码平台

架构实战营 - 毕业设计

随风King

「架构实战营」

Weblogic-SSRF漏洞复现

喀拉峻

网络安全 安全 信息安全

记一次安全漏洞分析

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

程序员的快乐,只需要这7款工具!

Jackpop

关于项目中 Repository 层的思考

CRMEB

架构营模块九作业

GTiger

架构实战营

基于Amazon ECS Fargate构建Apache Superset

亚马逊云科技 (Amazon Web Services)

存储

简讯:明道云近期荣获的三项荣誉

明道云

Salesforce架构师的10大原则

俞凡

架构 大厂实践 Salesforce

毕业设计项目

panxiaochun

架构实战营

Go 语言快速入门指南:Go 转 JSON

宇宙之一粟

Go JSON序列化 1月月更

三行代码下载抖音视频

你?

偷偷看了同事的代码找到了优雅代码的秘密

慕枫技术笔记

后端 1月月更

模块九作业:设计电商秒杀系统

危险游戏

架构实战营

有传闻说,写好总结可以升职加薪?

程序人生

Go编译原理系列5(抽象语法树构建)

书旅

Go 后端 编译原理 编译语言

大画 Spark :: 网络(2)-下篇-通过网络收取消息的过程

dclar

大数据 spark 源代码 Spark 源码

火狐浏览器一败涂地?

Jackpop

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