时隔16年Jeff Barr重返10.23-25 QCon上海站,带你看透AI如何重塑软件开发! 了解详情
写点什么

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

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

关注

评论

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

鸿蒙特效教程08-幸运大转盘抽奖

苏杰豪

鸿蒙 HarmonyOS ArkTS HarmonyOS NEXT

HarmonyOS 之 @Require 装饰器自学指南

李游Leo

HarmonyOS NEXT

精准审查,规避风险:中烟创新智能合同审查系统为企业保驾护航

中烟创新

城市综合治理系统(源码+文档+讲解+演示)

深圳亥时科技

扫码联网系统(源码+文档+讲解+演示)

深圳亥时科技

达芬奇DaVinci Fusion Studio 19.1.4中文激活版

Rose

哪里有cad2024详细激活教程?Autodesk AutoCAD 2024安装教程分享

Rose

鸿蒙特效教程05-鸿蒙很开门

苏杰豪

鸿蒙 HarmonyOS ArkTS HarmonyOS NEXT

鸿蒙特效教程06-可拖拽网格实现教程

苏杰豪

鸿蒙 HarmonyOS ArkTS HarmonyOS NEXT

鸿蒙特效教程07-九宫格幸运抽奖

苏杰豪

鸿蒙 HarmonyOS ArkTS HarmonyOS NEXT

PHP集成开发环境JetBrains PhpStorm 2024 最新中文密钥分享

Rose

PowerVerse QA:打造面向全球的AI+DePIN+Metaverse+Web3.0 DeCloud生态服务

PowerVerse

云算力 云算力挖矿 去中心化云算力 算力生态

openEuler 全栈式 AI 推理方案 使能 AI 普惠千行百业,推动企业实现数智化转型

极客天地

来看看现在go开发岗10k的面试强度

王中阳Go

Go 面试 后端 中小厂

【GreatSQL优化器-18】GROUP_INDEX_SKIP_SCAN

GreatSQL

鸿蒙特效教程10-卡片展开/收起效果

苏杰豪

鸿蒙 HarmonyOS ArkTS HarmonyOS NEXT

Boris FX Silhouette 2024 (影视跟踪抠像合成软件) v2024.5.6 直装版

Rose

axure rp 9怎么转换为中文版?axurerp9中文版安装包 附授权码

Rose

Web3的成功离不开什么?

PowerVerse

区块链 web3 dapps

图解「模型上下文协议(MCP)」:从与传统 API 的比较入手

Baihai IDP

AI agent LLM MCP 模型上下文协议

请查收官方通知!这5场课程,助您成为数智财务高端人才!

用友智能财务

AI 财务 会计

反向海淘代购系统平台总被骂"二次收费"?搭建者必看的5大自检清单与解决方案

代码忍者

专家管理系统(源码+文档+讲解+演示)

深圳亥时科技

鸿蒙特效教程09-深入学习animateTo动画

苏杰豪

鸿蒙 HarmonyOS ArkTS HarmonyOS NEXT

Photoshop 2025系统要求 ps2025中文版激活补丁分享

Rose

KeyShot 2025新功能详细介绍(附keyshot2025安装教程)

Rose

graphpad prism 10中文版 含注册机 | 数据分析绘图软件

Rose

鸿蒙特效教程04-直播点赞动画效果实现教程

苏杰豪

鸿蒙 HarmonyOS ArkTS HarmonyOS NEXT

免费好用的HEU KMS Activator(Win/Office全自动激活工具)

Rose

适用于Mac/win的数据库管理工具TablePlus v6.4.1

Rose

借助淘宝拍立淘API,打造超便捷商品识别引擎

tbapi

淘宝API接口 淘宝图片搜索接口 淘宝拍立淘接口

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