写点什么

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

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

关注

评论

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

时序数据库的集群方案?

TDengine

数据库 tdengine 开源

要做研发高手,就是必须能看英文、写英文

TDengine

数据库 tdengine 开源

TDengine 在酷哞哞的应用

TDengine

数据库 tdengine 开源 物联网

火爆的健身应用软件是如何一步一步打造出来的?

龙智—DevSecOps解决方案

DevOps perforce Helix Core

火山引擎大规模机器学习平台架构设计与应用实践

火山引擎开发者社区

人工智能 机器学习

ApacheCon Asia 2022 强势来袭!16 大专题等你投稿!

阿里巴巴云原生

开源 云原生 活动

druid源码学习八

Nick

Apache Druid 自旋锁

云原生赋能开发测试

百度Geek说

元原生

代码语言的魅力

百度Geek说

百度程序员Android开发小技巧

百度Geek说

移动端

直播预约|数据指标体系如何搭建才最有效,从0到1带你快速入门

袋鼠云数栈

大数据 数据中台

敏捷已死

方云AI研发绩效

时间序列化数据库选型?时序数据库的选择?

TDengine

数据库 tdengine

[Day41]-[回溯]-全排列

方勇(gopher)

LeetCode 回溯算法 数据结构算法

「国货」设计SaaS崛起,黑马inCreate自图冲出公装赛道

ToB行业头条

如何使用阿里云 CDN 对部署在函数计算上的静态网站进行缓存

阿里巴巴云原生

阿里云 Serverless 云原生 CDN 函数计算

为什么说 MongoDB 和 HBase 不适用于汽车行业的时序数据处理?

TDengine

数据库 tdengine 开源 时序数据库

B站S11破亿直播在线稳定性保障秘籍——演讲实录

TakinTalks稳定性社区

混沌工程 系统稳定性 全链路压测 安全生产

携手 TDengine,释普科技升级实验室仪器、监控智能方案

TDengine

数据库 tdengine 开源 物联网

携手数字人、数字空间、XR平台,阿里云与伙伴共同建设“新视界”

阿里云弹性计算

XR 数字人 视觉计算 瑶台

为什么企业要告别自托管并迁移到 Atlassian 云版?

龙智—DevSecOps解决方案

Atlassian Atlassian 云版 Atlassian迁移

客户成功是一种思维模式 | ONES 人物

万事ONES

[Day42]-[回溯]-组合

方勇(gopher)

LeetCode 数据结构和算法 回溯算法

netty系列之:在netty中实现线程和CPU绑定

程序那些事

Java Netty 程序那些事 5月月更

争夺存量用户关键战,助力企业构建完美标签体系丨01期直播回顾

袋鼠云数栈

大数据 数据中台

【刷题第12天】58. 最后一个单词的长度

白日梦

5月月更

LinkedList 源码分析-初始化&节点查询

zarmnosaj

5月月更

Docker学习记录

ZuccRoger

5月月更

第三方 IP:管理半导体外部 IP

龙智—DevSecOps解决方案

perforce Methodics IPLM 管理 IP

二分实现及工程使用—Kafka

工程师日月

算法 java 编程 5月月更

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