写点什么

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

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

关注

评论

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

“大数据+区块链”的智慧城市建设!

CECBC

区块链 大数据

Spring系列之新注解配置+Spring集成junit+注解注入

Java spring 微服务 架构师

架构师训练营 - 第 2 周学习总结(1 期)

阿甘

一个草根的日常杂碎(9月22日)

刘新吾

生活 随笔 记录

架构师训练营 1 期第 2 周:框架设计 - 作业

piercebn

极客大学架构师训练营

第7周的总结

Vincent

极客时间 极客大学

判断一个请求是否是Ajax异步请求

麦洛

ajax

分布式高并发下Actor模型如此优秀

架构师修行之路

系统设计 reactor 高并发

LeetCode题解:145. 二叉树的后序遍历,递归,JavaScript,详细注释

Lee Chen

大前端 LeetCode

oeasy 教您玩转 linux 010400 总结 summary

o

第6周作业

方堃

c++杂谈-1

菜鸟小sailor 🐕

c++

架构师训练营第 1 期 -week2

习习

微前端qiankun从搭建到部署的实践

fengxianqi

大前端 微应用

看动画学算法之:排序-count排序

程序那些事

动画 看动画学算法 看动画学数据结构 count排序

第2周

Geek_fabd84

救人于无形的“环境智能”,到底是一种什么智能?

脑极体

时空碰撞优化系列·二

誓约·追光者

hive Sparksql 计算效率 优化

船长梁晓玲的猎鹰号真的能赚钱嘛?不分析不知道……

成周

心理学 船长梁晓玲 诈骗

架构师训练营 - 第 2 周课后作业(1 期)

阿甘

一夜爆火,只因阿里内部作为参考的SpringBoot巅峰之作git开源

小Q

Java 架构 面试 微服务 springboot

Redis 发布订阅,小功能大用处,真没那么废材!

楼下小黑哥

Java redis spring

响应式编程到底是什么?

博文视点Broadview

Java 响应式 响应式编程 reactor 并发

架构师训练营第 1 期 第 1 周作业

李循律

甲方日常 20

句子

工作 随笔杂谈 日常 Java 25 周年

添加字幕哪个视频剪辑软件比较简单?

奈奈的杂社

视频创作 视频剪辑 视频后期 自媒体 后期字幕

众盟科技2020智能化白皮书:穿越新商业周期,读懂商业智能化的真义

脑极体

高并发下为什么更喜欢进程内缓存

架构师修行之路

缓存 架构设计

网站日志分析最完整实践

MySQL从删库到跑路

第7周作业

Vincent

极客时间 极客大学

超越色彩的魅力:读《黑白适界》

北风

艺术 摄影 黑白 摄影征文 画册

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