2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

鸿蒙网络编程系列25-TCP回声服务器的实现

长弓三石

DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

鸿蒙网络编程系列26-HTTPS证书自选CA校验示例

长弓三石

DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

应对复杂架构下的监控挑战?统一运维可观测能力是关键!

袋鼠云数栈

云计算 可观测性

鸿蒙网络编程系列18-Web组件加载网页的四种方式示例

长弓三石

DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

鸿蒙网络编程系列23-实现一个基于鸿蒙API的HTTP服务器

长弓三石

DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

浅谈混合云的特点及管理

天翼云开发者社区

云计算 私有云 混合云

和鲸社区数据科学实训季,西安交通大学圆满收官,西安,后会有期!

ModelWhale

Python 人工智能 数据科学 实训 和鲸社区

阿里巴巴商品详情API返回值中的促销与优惠信息

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

在研发度量中,如何为非技术型领导提供信息?

思码逸研发效能

DevOps 研发效能 研发效能度量 研发效能管理

鸿蒙网络编程系列22-Web组件文件上传示例

长弓三石

DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

鸿蒙网络编程系列24-Web组件与应用互操作示例

长弓三石

DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

新 Chrome 插件可检测 AI 伪造声音;Canary Speech 推出用于临床对话的语音分析技术丨 RTE 开发者日报

声网

NFT区块游戏系统开发: 构建与创新指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

海量大模型如何一键部署上云?函数计算 x ModelScope 社区给出答案

阿里巴巴云原生

阿里云 云原生 函数计算

鸿蒙网络编程系列21-使用HttpRequest上传任意文件到服务端示例

长弓三石

DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

Qwik-能帮你移出项目中99%的JS代码

天翼云开发者社区

SSR Qwik.js

拼多多商品详情数据接口:技术员的探索与实践

tbapi

拼多多API接口 拼多多商品详情数据接口 拼多多商品数据采集 拼多多商品详情API

质押挖矿系统开发搭建: 数字资产增值的秘密武器

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 代币开发

一文详解 MySQL 中的间隙锁

emanjusaka

MySQL gap lock

AI练中学,你的 AI 助教又升级啦!

TRAE.ai

鸿蒙网络编程系列19-获取网络连接信息并选择一种绑定到应用示例

长弓三石

DevEco Studio 开发实例 网络与连接

鸿蒙网络编程系列20-解决web组件加载网页白屏示例

长弓三石

DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

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