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)