BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Dilip Krishnan 关注 0 他的粉丝 ,译者 黄璜 关注 0 他的粉丝 发布于 2009年12月1日. 估计阅读时间: 5 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT