写点什么

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

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

关注

评论

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

海信三筒洗衣机全系配置及价格公布,疯狂宠粉!科技创新引领产业升级

新消费日报

Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置

阿里巴巴云原生

阿里云 云原生 nacos

阜博集团完成对 PEX 的收购

财见

线上线下畅玩无阻,陪玩系统小程序源码是怎样做到的?

DUOKE七七

php vue.js MySQL uniapp

CAD如何利用两点间的中点解决镜像中心线问题

极客天地

Apache Doris 2025 Roadmap:构建 GenAI 时代实时高效统一的数据底座

SelectDB

AI 数据湖 存算分离 实时分析 日志场景

CodeBuddy 焕新升级: 软件开发智能体 Craft 重磅发布

CodeBuddy

腾讯云 腾讯 AI编程 CodeBuddy

MCP Server 开发实战 | 大模型无缝对接 Grafana

阿里巴巴云原生

阿里云 云原生 Grafana

Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速

阿里巴巴云原生

阿里云 Serverless 云原生

如何高效使用 Text to SQL 提升数据分析效率?四个关键应用场景解析

镜舟科技

数据湖 数据分析 分析型数据库 StarRocks Text to SQL

Flutter 与 uni-app 的深度对比:鸿蒙开发的最佳选择竟是原生开发

坚果

鸿蒙 HarmonyOS

程序员业务能力进阶:技术与业务的深度融合

代码制造者

低代码 #程序员

Cision宣布获得2.5亿美元新资金

财见

KWDB 开源社区走进重庆大学

KaiwuDB

数据库 kwdb数据库 校园行

Kube-Proxy 可观测性最佳实践

观测云

Kubernetes

CAD中的草图绘制功能

极客天地

字节跳动开源 Godel-Rescheduler:适用于云原生系统的全局最优重调度框架

字节跳动开源

云原生 全局最优调度 多策略协同 高吞吐执行 生产级稳定性

Claude 语音模式曝光:支持多音色和文件上传;谷歌发布和海豚对话的语音模型 DolphinGemma|日报

声网

【活动预告】4.19 相约上海,详解数据库与 AI 的理念融合

Apache IoTDB

阿里云 MSE Nacos 发布全新“安全防护”模块,简化安全配置,提升数据保护

阿里巴巴云原生

阿里云 云原生 nacos MSE

从开发者视角解读 Google Cloud Next 25

声网

优化 Apache 日志记录的 5 个最佳实践

运维有小邓

日志管理系统 Apache 日志

直播预告 | KWDB 数据库安装使用快速上手

KaiwuDB

数据库 直播

CST联合Isight进行天线DOE设计

思茂信息

cst cst电磁仿真 CST Studio Suite

代码成为 "乐高积木"——AI 时代的开发革命

代码制造者

#AI编程

CAD缩放后有符号不显示怎么办

极客天地

利用代理 IP 突破反爬限制,实现跨境电商数据高效爬取

Yan-英杰

Python 爬虫 爬虫实战

「高盛」最新人形机器人研报:主流人形机器人公司梳理和商业化瓶颈(附报告)

机器人头条

科技 大模型 人形机器人 具身智能

如何合理规划Elasticsearch的索引|得物技术

得物技术

索引 Elastic Search 容量设计

前端热更新:无声引擎驱动中国互联网的数字化转型

xuyinyin

无感改造,完美监控:Docker 多阶段构建 Go 应用无侵入观测

阿里巴巴云原生

golang 阿里云 云原生

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