HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

关注

评论

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

2023-01-09:以下go语言代码输出什么?A:+Inf; B:zero; C:something else; D:doesn‘t compile。 package main import (

福大大架构师每日一题

golang go语言 福大大 选择题

2023年,祝你有个好习惯!

石云升

习惯 年终总结 1月月更

一个词语总结2022,你的是什么? | 2022 年度总结

陈言必行

2022年终总结

2022年中国潮流运动消费发展白皮书

易观分析

运动 潮流运动 潮流

写了2年文章的我,昨天第一次露脸直播。

王中阳Go

深度思考 高效工作 学习方法 程序员 微服务架构

一次JVM GC长暂停的排查过程

京东科技开发者

Java 后端 JVM 虚拟机 企业号 1 月 PK 榜

关于 Serverless 应用架构对企业价值的一些思考

Serverless Devs

ClickHouse 挺快,esProc SPL 更快

陈橘又青

Guitar Pro2024免费版吉他打谱软件

茶色酒

Guitar Pro8 Guitar Pro2024

2022年终总结:一年读完的40本书

石云升

读书笔记 年终总结 1月月更

Jenkins 项目的 gpg: signing failed: Bad passphrase 错误

HoneyMoose

React源码分析5-commit

flyzz177

React

LogicFlow安装与准备工作

小鑫同学

前端 vite Vue 3 Vue3 Typescript

Postgresql分析慢sql

查拉图斯特拉说

数据库 postgresql db PgSQL PG库

重磅发布丨从云原生到 Serverless,先行一步看见更大的技术想象力

Serverless Devs

二维码的秘密

古时的风筝

二维码 二维码生成

微服务的版本号要怎么设计?

江南一点雨

微服务 语义化

《PyTorch 深度学习实战》学习笔记--Mac M1 安装PyTorch2.0

IT蜗壳-Tango

Jenkins 构建过程中提示 GPG 错误

HoneyMoose

如何把 高并发限流 实现的那叫一个优雅!

风铃架构日知录

Java 程序员 高并发 IT 限流

一次关于 MySQL 主从模式采用 GTID 的实践记录

风铃架构日知录

Java MySQL IT 主从复制 MySQL 数据库

ShardingSphere分库分表schema名称导致NPE问题排查记录

小小怪下士

Java 程序员 后端

公共服务 智慧政务数据可视化大屏一体化系统

2D3D前端可视化开发

数据可视化 数字政务 智慧政务 数字政府 可视化大屏

带你认识数仓的增量备份核心设计

华为云开发者联盟

数据库 后端 华为云 数仓 企业号 1 月 PK 榜

恭喜龙蜥获得中国开源云联盟2022年度中国“最佳开源实践案例”和“杰出开源贡献者”奖项

OpenAnolis小助手

开源 龙蜥社区 COSCL 木兰峰会 中国开源云联盟

模块五作业

张贺

ProgressBar(进度条)

梦笔生花

Android Studio 进度条 ProgressBar

React源码分析6-hooks源码

flyzz177

React

Studio One2023终于有了视频支持,可以方便做视频配乐了

茶色酒

Studio One2023

小程序原理之: WXSS 编译

Speedoooo

小程序 小程序技术 小程序编译

React源码分析7-state计算流程和优先级

flyzz177

React

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