写点什么

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

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

关注

评论

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

夹具、治具、模具零件加工|云MES系统解决方案

万界星空科技

开源 解决方案 MES系统

HDC 2023丨以HarmonyOS技术赋能艺术,引领鸿蒙生态媒体体验升级

最新动态

《这就是ChatGPT》读后感

叶轩子

人工智能 深度学习 ChatGPT

在langchain中使用自定义example selector

程序那些事

程序那些事 大语言模型 langchain

直播源码硬核技术分析:主播PK功能

山东布谷网络科技

直播源码

DFS算法解析

数新网络官方账号

算法 DFS 深度优先搜索

融云荣登36氪WISE2023「全球化最佳基础设施」榜单

融云 RongCloud

全球化 通信 运营 融云 wise

使用 Vue 自定义拖放文件上传

互联网工科生

GitHub Vue 代码

redis 的哨兵模式详解和实战

java易二三

Java redis 编程 程序员 计算机

redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?

java易二三

redis 编程 程序员 面试 计算机

科兴未来|2023“数智未来,聚放神采”医疗科技创新挑战赛

科兴未来News

R2在全渠道业务线的落地 | 京东云技术团队

京东科技开发者

测试 质量 企业号 8 月 PK 榜 R2

LMOps 工具链与千帆大模型平台

Baidu AICLOUD

LLMOps 大模型微调 千帆大模型平台 LMops

5 小时玩转阿里云 Flink 实时湖仓,速速报名!

Apache Flink

大数据 flink 实时计算

堡垒机-企业最好的家人,信息安全的守门人

行云管家

互联网 网络安全 信息安全 堡垒机

火山引擎DataLeap数据质量动态探查及相关前端实现

字节跳动数据平台

大数据 数据中台 数据治理 数据安全 企业号 8 月 PK 榜

面向万物智联的应用框架的思考与探索

OpenHarmony开发者

OpenHarmony

桌面应用打包:pyinstaller | 京东物流技术团队

京东科技开发者

Python pyinstaller 桌面应用 企业号 8 月 PK 榜

InnoDB 单表数据量超过 2000W 出现性能问题

红袖添香

MySQL innodb 索引 B+树 缓冲池

线程池-从零到一了解并掌握线程池

派大星

线程池 Java 面试题

从源码层面深度剖析Spring循环依赖 | 京东云技术团队

京东科技开发者

spring 源码剖析 循环依赖 @Bean 企业号 8 月 PK 榜

一文详解TextBrewer

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 8 月 PK 榜

MySQL事务ACID原理

红袖添香

MySQL 数据库 事务 ACID MySQL InnoDB

利用uplugin对比Webpack和Rollup插件系统

OpenTiny社区

前端

深入理解 HDFS(四):Socket

冰心的小屋

hdfs NameNode IPC Server HDFS client 通信渠道

服装行业多模态算法个性化产品定制方案 | 京东云技术团队

京东科技开发者

数据化 AIGC GPT 企业号 8 月 PK 榜

MySQL 体系结构

红袖添香

MySQL 存储引擎 InnoDB存储引擎

10分钟了解Flink Watermark水印

程序员半支烟

Java 大数据 flink 程序员

什么是数字化管理,对企业价值几何?

优秀

数字化转型 数字经济 数字化管理

关于ANCE OS兼容性评估 & Linux智能全栈调优KeenTune介绍 | 第 93-94 期

OpenAnolis小助手

QA sig 龙蜥大讲堂 KeenTune ANCE

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