写点什么

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

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

关注

评论

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

服装生产流程管理在明道云的实现

明道云

【LeetCode】矩阵中战斗力最弱的 K 行Java题解

Albert

算法 LeetCode 8月日更

Git的基本操作

卢卡多多

git flow git reset 8月日更

【Vue2.x 源码学习】第二十二篇 - dep 和 watcher 关联

Brave

源码 vue2 8月日更

docker部署redis记录,楼主亲测无异常

小鲍侃java

8月日更

大数据训练营 -0725 课后作业

cc

Pandas入门教程-开篇之作

Peter

Python pandas 数据分析师 #python

02-架构图

Lane

架构实战营-毕业设计

En wei

架构实战营

外包学生管理系统架构设计文档

君子意如何

架构师训练营第 1 期 「架构师训练营第 1 期」

网络攻防学习笔记 Day92

穿过生命散发芬芳

网络攻防 8月日更

pyinstaller 打包

橙橙橙橙汁丶

Linux中Shell重定向

入门小站

Linux

做行业的底层架构者 为区块链+提供更多可能

CECBC

解密NFT,进军元宇宙,区块链与价值实体将如何链接?

CECBC

在线短视频缩略图剪切工具

入门小站

工具

啊哈!这段时间的学习感受

Nydia

8月日更

现代分布式架构设计原则-可靠性

余先生

稳定性 可用性 弹性 可靠性

非典型开发者的形象三变

脑极体

「SQL数据分析系列」13. 索引和约束

Databri_AI

sql 索引 位图

Discourse 图片上传的更新

HoneyMoose

Seldon 使用 (五): engine & graph

托内多

tensorflow kubeflow seldon

架构实战营毕业总结

En wei

架构实战营

具备货币属性的比特币,会成为一种货币吗?

CECBC

Pandas入门教程-Series类型数据

Peter

Python 数据分析 数据 pandas

从 Druid 控制台(Druid console)中进行查询

HoneyMoose

招商银行信用卡卡号识别项目(第一篇),Python OpenCV 图像处理取经之旅第 53 篇

梦想橡皮擦

8月日更

聊聊实时数仓架构设计

水滴

实时数仓 数仓架构 8月日更 数仓建设思路

Python OpenCV 图像处理之傅里叶变换,取经之旅第 52 篇

梦想橡皮擦

8月日更

手把手撸二叉树之叶子相似的树

HelloWorld杰少

面试 大前端 二叉树 数据结构与算法 8月日更

缓存使用的一些问题

旺仔大菜包

redis

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