写点什么

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

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

关注

评论

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

linux入门系列16--文件共享之Samba和NFS

程序员潘Sir

Linux centos linux运维 Samba NFS

linux入门系列18--Web服务之Apache服务1

程序员潘Sir

Linux centos apche linux运营 centos网站部署

linux入门系列20--Web服务之LNMP架构实战

程序员潘Sir

php MySQL Linux centos ngnix

Flink-有状态算子的扩缩容-12

小知识点

scala 大数据 flink

架构师第十二周作业

傻傻的帅

央行数字货币钱包上线后又秒关 兑换了的 DCEP 别担心

CECBC

数字货币 央行

架构师第十二周学习总结

傻傻的帅

区块链技术发展面临七大关键挑战以及未来的五大展望

CECBC

区块链 新基建 数字型资产

ARTS Week9

丽子

ARTS 打卡计划

什么是分散式金融(DeFi)?

志学Python

去中心化金融 defi

更新丢失、写偏、幻读:数据库事务从快照隔离到可序列化

青菜年糕汤

数据库 数据库事务 分布式数据库 数据库设计 分布式系统

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

fujin

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

fujin

打通微信和钉钉服务是一种怎样的体验?

Ceelog

微信 钉钉 微信公众号 Go 语言

第 0 期架构师训练营第 6 周作业2-总结

fujin

巧用HashMap一行代码统计单词出现次数

程序那些事

jdk hashmap 统计字数

基于区块链的社会治理探索

CECBC

区块链 大数据 信息技术

linux入门系列17--邮件系统之Postfix和Dovecot

程序员潘Sir

Linux centos Dovecot Postfix 邮件系统

视频AI第一步-动作识别数据集

flow

搬家,又一次和过往告别

王磊

程序人生

Android | dagger细枝篇

哈利迪

android

二叉树深度和大文件排序

escray

学习 面试

oeasy教您玩转linux010108到底哪个which

o

Go: ElasticSearch客户端学习

陈思敏捷

elasticsearch elastic go-elasticsearch Go 语言

避免栽坑之掌握Jenkins工作原理

清菡软件测试

jenkins

linux入门系列19--数据库管理系统(DBMS)之MariaDB

程序员潘Sir

MySQL Linux centos linux运维 MariaDB

Python作业留底--《菜鸟教程》Python 练习和习题

Geek_f6bfca

第 0 期架构师训练营第 5 周作业 2-总结

fujin

求索十五载:百度地图绘就的时代浪漫

脑极体

增量了两个私有网络之后的对比

孙朝辉🐢

linux入门系列18--Web服务之Apache服务2

程序员潘Sir

Apache Linux centos linux运维

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