写点什么

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

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

关注

评论

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

StarRocks 算子落盘:让大查询又快又稳

StarRocks

数据库 OLAP StarRocks

SWOT是什么?10个好用的SWOT分析工具盘点,战略分析必备!

彭宏豪95

可视化 画图软件 在线白板 绘图工具 SWOT

从低代码的骂声说起

小粽

低代码

华为云CodeArts 11.11活动倒计时,新用户福利重磅来袭

平平无奇爱好科技

罗拉ROLA告诉你美国IP代理如何获取?适用于哪些场景?

Geek_bf375d

爬虫 代理IP 代理IP设置 免费代理ip 跨境电商

c语言基础回顾-指针 | AI工程化部署

AIWeker

c AI工程化部署

国内首批!华为云云原生中间件DCS&DMS获软件可信“卓越级”认证

平平无奇爱好科技

深度解读:Raft是Paxos的一个变种么?

小猿姐

数据库 raft PAXOS

华为云11.11 PaaS产品|坐看云卷云舒:运维开发一步到位

平平无奇爱好科技

HashML——让更多企业读懂数据,用好AI

酷克数据HashData

现在的我们需要怎么去布局一级

币离海

BNB Chain 成就衍生品 DEX,APX Finance 趁势脱颖而出

股市老人

LeetCode题解:13. 罗马数字转整数,哈希表,JavaScript,详细注释

Lee Chen

JavaScript LeetCode

华为云11.11 PaaS产品|精密云工程:智能激活业务速率限时优惠倒计时

平平无奇爱好科技

华为云11.11 PaaS产品|云端援手:智能枢纽应对数字资产挑战

平平无奇爱好科技

WorkPlus即时通讯,打通上下游产业链,构建企业生态圈

BeeWorks

NEO: A Learned Query Optimizer 论文

Downal

意图交易:为用户思考,而不是让用户思考

股市老人

国家超级计算济南中心低代码平台应用实践

明道云

SQL LIKE 运算符:用法、示例和通配符解释

小万哥

程序员 软件 sql 后端开发 MySQL、

罗拉ROLA分析亚马逊频繁扫号下的跨境电商,跨境电商卖家应该何去何从?

Geek_bf375d

爬虫 代理IP 代理IP设置 免费代理ip 跨境电商

机智的告警策略,完善监控系统的重要一环

观测云

监控告警 告警策略

罗拉ROLA告诉你选择海外住宅代理IP服务供应商要注意哪些问题?

Geek_bf375d

爬虫 跨境电子商务 代理IP 代理IP设置 免费代理ip

为什么Facebook运营需使用IP代理?罗拉ROLA详解有哪些美国IP代理好用?

Geek_bf375d

爬虫 代理IP 代理IP设置 免费代理ip 跨境电商

一款专为POS机设计的芯片解决方案

芯动大师

飞书智能伙伴之 AI 数智参谋:先进团队,北极星指标也要遥遥领先

Kyligence

指标平台 智能决策

罗拉Rola知道IP地址如何变更的吗?

Geek_bf375d

爬虫 跨境电子商务 代理IP 代理IP设置 免费代理ip

文心一言 VS 讯飞星火 VS chatgpt (141)-- 算法导论12.1 1题

福大大架构师每日一题

福大大架构师每日一题

华为云11.11 PaaS产品|抢救未来增长策略:稳定、强力的云服务限时优惠进行中

平平无奇爱好科技

跨境电商有没好的代理ip系统推荐?罗拉ROLA告诉你

Geek_bf375d

代理IP 代理IP设置 免费代理ip 跨境电商 爬虫分享

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