NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

架构实战营 - 模块六作业

思梦乐

故事篇:终于给老婆讲明白什么是logback了!

阿Q说代码

故事 实战 logback 8月日更

架构实战营 - 模块六作业

李东旭

「架构实战营」

关于我尝试抓包微信失败后想到的新方法居然和奥特曼有关~

4ye

Python TCP 爬虫 后端 8月日更

系统对接阿里云短信接口(Java开发实践)

Python研究者

8月日更

架构实战营模块6作业

技术是伙伴

架构实战营

架构实战营模块 6 作业指导

华仔

#架构实战营

☕【Java技术指南】「TestNG专题」单元测试框架之TestNG使用教程指南(下)

洛神灬殇

Java JUnit 8月日更 testNG

Golang:并发操作中常见的读写锁

Regan Yue

读写锁 Go 语言 8月日更

打破DPDK的误区: 数据面最流行的工具包DPDK,前世今生,未来

奔着腾讯去

Linux Kenel DPDK VPP

在线JSON转CSV,TSV工具

入门小站

工具

基于Netty,20分钟手撸一个RPC框架

码农参上

netty 8月日更

难以置信!阿里新产微服务架构进阶笔记我粉了!理论实战齐飞

Java 编程 架构 面试 架构师

网络攻防学习笔记 Day119

穿过生命散发芬芳

网络安全 8月日更

Vue进阶(八十一):Vue+element UI 实现“回到顶部”按钮组件

No Silver Bullet

Vue 8月日更

模块六作业

俊杰

架构实战营

认认真真的聊聊"软"中断

编程 架构 后端 计算机

身份验证绕过漏洞分析

网络安全学海

黑客 网络安全 信息安全 WEB安全 安全漏洞

面试侃集合之PriorityBlockingQueue篇

码农参上

Priority Queue 8月日更

WebAssembly影响未来WEB技术

devpoint

Unity webassembly 8月日更

模块六作业

king

04. 实用主义的人工智能

数据与智能

人工智能

百度地图开发 - 在地图上检索数据 08

Andy阿辉

android Android 小菜鸟 Android端 8月日更

装修记

escray

生活记录 8月日更

架构实战营 - 模块六作业

Julian Chu

架构实战营

要智能,得懂行,“要得”重庆

脑极体

操作系统课程学习记录

春秋易简

操作系统

Linux之file命令

入门小站

Linux

新书介绍 -- 《Redis核心原理与实践》

binecy

redis cluster 书籍 redis sentinel Redis Stream

Vue进阶(八十二):updated 应用详解

No Silver Bullet

Vue 8月日更

阿里二面:怎么解决MySQL死锁问题的?

Java MySQL 架构 面试 后端

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