RESTfulie 是一个创建超媒体感知服务与客户端的Gem。在开发超媒体感知的服务和客户端的时候使用RESTfulie将非常容易。
下面描述了定义一个订单的例子,这一订单将经过一系列定义好的转变,比如从未结算到结算等等。它允许将各种各样的转变映射到对应的动作...
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)
在十一月份,我们报道了Restfulie项目的发布,该框架用于创建对超媒体敏感的客户端和服务。最近,Guilherme Silviera将自己的Restfulie项目和RESTeasy进行了比较,后者是一个JAX-RS的实现,并质疑RESTeasy(甚至于JAX-RS)是否是构建RESTful应用的正确基础。这在社区里引起了一些讨论,因此,我们找机会采访了Guilherme,借此来搞清楚事情的来龙
Guilherme Silveira投稿给InfoQ告知了一个新的ruby gem包的发布,在开发超媒体感知的服务和客户端的时候使用它将非常容易。他这样说到:\ \关于什么是将rest/restful的思想运用到应用中以及它的好处是什么,已经被谈论得很多了。去年, Mark Baker 写过关于restful应用里的超媒体内容。还有更多关于 正式定义HATEOAS的尝试以及它的 优势的文章。尽管在