写点什么

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

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

关注

评论

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

打造全栈云自主可控体系,天翼云构筑数字安全屏障!

天翼云开发者社区

云计算 网络安全 云服务 天翼云

共促数字经济高质量发展,天翼云出席2024 IDC中国年度盛典!

天翼云开发者社区

云计算 IDC 天翼云

一次基于AST的大规模代码迁移实践

vivo互联网技术

代码迁移 postcss 抽象语法树AST gogocode

体育场馆LED显示屏的分类及应用

Dylan

科技 LED LED display LED显示屏 体育

百度搜索结果波动的极致治理

百度Geek说

Seamless Video Roaming: Our Ultimate Solution Revealed!

wallyslilly

ipq9574 IPQ5332

第三期安全AI挑战者计划-文本分类对抗攻击 第三名“我永远喜欢星野源”技术总结

阿里云天池

【程序大侠传】应用内存缓步攀升,告警如影随形

Disaster

探索MySQL中VARCHAR(255)的演变及其对数据库设计的影响

Steven

PhotoSweeper X for Mac(重复照片清理工具)

Mac相关知识分享

合同管理中的常见陷阱,你是否也中招了?

天津汇柏科技有限公司

低代码 合同管理 AI 人工智能

获取淘宝商品详情数据api接口GET请求访问权限的条件

代码忍者

API 接口 pinduoduo API

云灾备:云时代的数据安全

天翼云开发者社区

云计算 网络安全

Go 必知必会:掌握Go语言的流程控制,构建逻辑与决策的基石

王中阳Go

流程控制 流程控制语句 GO语言编程

网络编程入门如此简单(四):一文搞懂localhost和127.0.0.1

JackJiang

即时通讯;IM;网络编程

华为智慧屏 V5 Max 110发布!Audio & HDR Vivid畅享菁彩视听盛宴

最新动态

《春江花月夜》Vivid菁彩视听版,开启一场美学视听盛宴!

最新动态

精通Java并发锁机制:24种锁技巧+业务锁匹配方案(第二部分)

肖哥弹架构

Java 高并发

浅析数字孪生与数字卫星发展史

DevOps和数字孪生

卫星

Simplemind pro for Mac(mac上的思维导图软件) 中文版

Mac相关知识分享

Mac的文本处理软件FSNotes for mac中文免激活版

Mac相关知识分享

【行业知识】跨境电商怎么定义?需要用堡垒机吗?

行云管家

等保 堡垒机 跨境电商

助力降本增效,ByteHouse打造新一代云原生数据仓库

字节跳动数据平台

数据仓库 云原生 OLAP 降本增效

使用豆包MarsCode 实现高可用扫描工具

豆包MarsCode

人工智能 程序员 AI 开发 智能化

如何基于云产品搭建一个高可用性的网站

天翼云开发者社区

云计算

3D家庭室内设计工具Live Home 3D Pro for Mac

Mac相关知识分享

观测云产品更新 | 场景、基础设施、用户访问、管理等

观测云

数据分析 基础设施

博睿数据受邀亮相NebulaGraph Meetup北京站

博睿数据

MLPerf 放榜,中国 AI 存储公司焱融科技斩获多项世界第一

焱融科技

AI 高性能存储 MLPerf

批量重命名文件工具A Better Finder Attributes 7 for Mac

Mac相关知识分享

mac苹果电脑虚拟机推荐:VMware Fusion Pro for Mac 下载

你的猪会飞吗

VMware Fusion Pro VMware Fusion Pro 13 mac VMware Fusion Pro 12

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