写点什么

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

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

关注

评论

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

数据库定时备份linux篇

xiezhr

数据库 Linux Shell 数据备份 3月日更

币管家量化交易软件开发|币管家量化交易APP系统开发

系统开发

半个多月时间4面阿里,已经成功拿下offer,分享一下个人面经

Java架构之路

Java 程序员 架构 面试 编程语言

Java程序员福利!2021年最新17套完整版一线大厂面试真题

Java架构追梦

Java 架构 面试 金三银四

实习记录-埋点测试

YUKI0506

如何招聘一名产品经理

马踏飞机747

互联网 产品经理 招聘 职场成长

职场里,对数据库要有敬畏之心!

Simon

MySQL 数据库

Kafka 架构中 ZooKeeper 以怎样的形式存在?

李尚智

Java 消息中间件

力扣(LeetCode)刷题,简单题(第19期)

不脱发的程序猿

程序员 LeetCode 28天写作 算法面经 3月日更

2021最新分享:阿里内部总监手码的“Redis学习手册”风靡全网

比伯

Java 编程 程序员 架构 面试

十四五,鹏城应作先锋看,山河同襄智能体

脑极体

【LeetCode】分割回文串 II Java题解

Albert

算法 LeetCode 28天写作

智能炒币机器人软件开发|智能炒币机器人APP系统开发

系统开发

收藏!这些 IDE 使用技巧,你都知道吗

阿里巴巴云原生

Java ide 云原生 API 调度

分布式事务与解决方案

一个大红包

28天写作 3月日更

深入理解Linux内核 RCU 机制

赖猫

Linux linux编程 Linux内核

音视频之opengl渲染图片

赖猫

音视频

Linux/Centos Epoll 原理解析

赖猫

Linux 高并发 epoll

高考大数据:全国31省高考难度,哪个才是地狱模式?

不脱发的程序猿

大数据 数据分析 28天写作 高考难度 3月日更

平安智慧社区建设方案,平安小区的系统功能

13530558032

区块链电子合同应用落地--区块链电子合同签约

13530558032

LDAP身份认证管理最佳实践

龙归科技

服务器 ldap 客户端

Alluxio 助力 Kubernetes,加速云端深度学习

阿里巴巴云原生

人工智能 大数据 容器 云原生 k8s

WebRTC 音视频同步原理与实现

阿里云CloudImagine

阿里云 音视频 WebRTC 流媒体 视频云

纯干货 | 详解 HDFS 3.x 新特性-纠删码

五分钟学大数据

大数据 hdfs 28天写作 3月日更

JAVA已经呈饱和趋势了吗?

cdhqyj

Java 程序员 工作 IT

不吹不黑聊中台

Geek_dn82ci

云计算 中台 企业架构

mongodb 源码实现系列 - Mongodb write写(增、删、改)模块设计与实现

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 架构 分布式数据库mongodb

Python 中文编码

依旧廖凯

Python 28天写作 3月日更

OCE等你加入

滴滴云

云计算 私有云 滴滴夜莺 Obsuite

Linux内核 设备树操作常用API

赖猫

Linux Linux内核

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