2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

RESTfulie:一个创建超媒体感知服务与客户端的 Gem

  • 2009-11-30
  • 本文字数:1112 字

    阅读完需:约 4 分钟

Guilherme Silveira 投稿给 InfoQ 告知了一个新的 ruby gem 包的发布,在开发超媒体感知的服务和客户端的时候使用它将非常容易。他这样说到:

关于什么是将 rest/restful 的思想运用到应用中以及它的好处是什么,已经被谈论得很多了。去年, Mark Baker 写过关于 restful 应用里的超媒体内容。还有更多关于正式定义 HATEOAS 的尝试以及它的优势的文章。尽管在创建基于 web 的服务方便有着一些很好的应用,但是它仍然缺失我们日常生活中最好的一部分超链接与超媒体内容

他接着描述了定义一个订单的例子,这一订单将经过一系列定义好的转变,比如从未结算到结算等等。它允许将各种各样的转变映射到对应的动作…

复制代码
class Order < ActiveRecord::Base
state :unpaid, :allow => [:latest, :pay, :cancel]
state :cancelled, :allow => :latest
transition :latest, {:action => :show}
transition :cancel, {:action => :destroy}, :cancelled
transition :pay, {}, :preparing
end

它将会生成诸如这样的一个基于 atom 的嵌入超媒体的资源表示:

复制代码
<order>
<product>basic rails course</product>
<product>RESTful training</product>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom"
href="http://www.caelum.com.br/orders/1" rel="latest" />
<atom:link xmlns:atom="http://www.w3.org/2005/Atom"
href="http://www.caelum.com.br/orders/1/pay" rel="pay" />
<atom:link xmlns:atom="http://www.w3.org/2005/Atom"
href="http://www.caelum.com.br/orders/1" rel="cancel" />
</order>

并且支持客户端调用通过消费这一资源表示而动态创建的方法:

复制代码
order = Order.from_web 'http://caelum.com.br/orders/1'
order.pay(payment)

Jim Webber ,他的 RESTBucks 文章和马上发布的 REST 著作启发了这一 gem 的创建,对此表示到

智多星 Guilherme Silveira 和 Adriano Almeida,Lucas Cavalcanti 一道,在 RESTful 服务的前沿掀起了风暴。[…] 更为重要的是,他们编写了一个通用的能够用于探寻这一协议的客户端。他们的样例服务托管于 GAE,并且在 GitHub 上发布了代码让大家参与。你们干得太棒了,并且非常及时。

Savas Parastatidis ,这本书的合著者,对此有如下的评论

I can’t wait for our book to finish so that everyone can check out our discussion of hypermedia and the stuff we’ve built. It’s really great to see Restfulie taking a very similar approach to ours.

关于这一 gem 用于创建 RESTful 服务和消费这些服务的客户端的具体例子可以在 GitHub 项目存储获得。

查看英文原文: RESTfulie - A Gem To Create Hypermedia Aware Services And Clients

2009-11-30 06:182086
用户头像

发布了 133 篇内容, 共 43.8 次阅读, 收获喜欢 1 次。

关注

评论

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

企业如何构建基于YashanDB的数据分析系统

数据库砖家

为何选择YashanDB数据库作为您的数据管理平台?

数据库砖家

为什么YashanDB适合中小企业?成本效益分析

数据库砖家

为什么选择YashanDB数据库作为您的数据解决方案

数据库砖家

企业如何利用YashanDB实现数据资产价值最大化

数据库砖家

企业如何优化YashanDB的查询性能?实用策略总结

数据库砖家

从MPP到NewSQL:TiDB全面替代Greenplum的技术必然性

TiDB 社区干货传送门

TiDB第四届征文-业务场景实战

“企业级敏捷教练课程” CSP-SM认证 | 9月13-14日 · 周末班

ShineScrum

敏捷 敏捷教练 ScrumMaster认证 CSM认证 CSM认证培训

什么是YashanDB?深入解析企业级数据库解决方案

数据库砖家

企业如何根据业务需求调整YashanDB数据库配置

数据库砖家

为何YashanDB数据库是现代企业数字化转型的选择

数据库砖家

为什么YashanDB数据库是大数据处理的理想选择?

数据库砖家

企业如何通过YashanDB实现数据的实时同步与备份?

数据库砖家

企业如何通过YashanDB实现业务数据整合

数据库砖家

YashanDB的事务处理特性

数据库砖家

携手火山引擎,顺丰科技用AI重塑供应链

新消费日报

为什么YashanDB数据库是数据驱动企业的选择?

数据库砖家

企业如何通过YashanDB实现敏捷数据开发?

数据库砖家

企业如何选择合适的YashanDB数据库部署策略

数据库砖家

企业在选择YashanDB数据库时应关注哪些关键指标?

数据库砖家

为什么选择YashanDB作为你的数据库平台?

数据库砖家

中烟创新自研【烟草专卖执法案卷评查系统】入选“北京市人工智能赋能行业发展典型案例”

中烟创新

了解YashanDB的索引机制,提升查询效率

数据库砖家

企业为什么选择YashanDB数据库?七大核心优势解析

数据库砖家

企业云端环境下YashanDB数据库部署实战指南

数据库砖家

企业如何利用YashanDB提升系统稳定性

数据库砖家

企业如何使用YashanDB实现数据资产最大化?

数据库砖家

共筑 AI 时代金融数据新基座,平凯星辰亮相中国国际金融展

TiDB 社区干货传送门

企业如何有效评估YashanDB的实施效果

数据库砖家

YashanDB数据库安装流程和配置指南

数据库砖家

企业如何利用YashanDB实现高效的数据检索

数据库砖家

RESTfulie:一个创建超媒体感知服务与客户端的Gem_SOA_Dilip Krishnan_InfoQ精选文章