AICon 深圳站 Keynote 嘉宾官宣!共探AI价值转化的实践路径 了解详情
写点什么

Thomas 谈 REST Describe & Compile

  • 2007-06-21
  • 本文字数:1654 字

    阅读完需:约 5 分钟

Thomas Steiner 已经发布了 REST Describe & Compile 工具的 0.3 版。这个工具可根据现有的 REST 消息构建出 WADL 描述,并可进一步生成多种语言的代码。这次的新版本增加了生成 Java 代码的功能(之前已可生成 PHP、Ruby、Python 和 C#代码)。要想对 REST Describe & Compile 工具有个初步了解,你可以试试它的在线版本;你也可以下载它的源码。这是一个Java 程序,其中使用了 Google Web Toolkit

Thomas 跟 InfoQ 通过 E-mail 进行了一次简短的问答,以解答关于方法和工具使用上的一些最显著的问题。

InfoQ:你能不能给我们作一个简要的概括——用两句话介绍 REST Describe & Compile?

Thomas Steiner (TS):WADL 跟 REST 的关系等同于 WSDL 跟 SOAP 的关系。WSDL 有 Axis 和 WSDL2Java 工具,REST 则有 REST Describe & Compile,它是一个很酷的 WADL 生成工具,以及 WADL 到任何语言的代码生成工具。差不多是任何语言 ;-)

InfoQ:这跟 Google 有什么关系?

TS:这是我在 Google 做的毕业设计,不过它不是正式的 Google 产品。我在实习期间是作为 Google 的临时员工工作,最近又跟 Google 签了一份从 10 月份开始的全职工作合同。

InfoQ:你是打算即时生成服务描述,然后用“契约先行”的方式来使用它们?

TS:只要在头脑中构想出 URI 的结构,你就可以用“事例驱动”的方式来构建服务。然后不费吹灰之力就得到 WADL 描述和代码。将来你的服务打算支持哪些请求,你就准备一组事例,把它们丢给工具,就可以得到 WADL 和任何语言的客户端代码。

InfoQ:你对于认为代码生成是罪恶的观点看法如何?

TS

/**
\* 本文件由 REST Compile 自动生成。
\* 你不应该修改本文件,除非你知道自己在做什么。任何修改
\* 都有可能造成严重破坏,甚至摧毁你的电脑。
*/

除此之外,代码生成让你能够非常快速地对契约更改作出响应。修改服务描述,运行代码生成器,你的工作就完成了。代码生成有助于全面保证一致性,当你只需要维护生成器而不用动任何一个文件时,维护也变得更简单。这跟做爱很像,只有当你真正享受过之后你才能说出好在哪里。

InfoQ:你对“REST 是否需要一个描述语言”这场争论的观点如何?

TS:老实说,我觉得大家对于什么是 REST,什么是 RESTful,什么是用 REST 伪装的 WS-*,太过庸人自扰了。我觉得问题不在于 HTTP 方法是如何映射到 CRUD 的,对这些问题大家已经讨论了很久。我更同意 Nelson Minar 的观点:“怎么行得通就怎么做”。没有什么 REST 不 REST 的做事方式,只有一家企业的做事方式。有时候一家企业被另一家买下了,突然间企业里就有了两种做事方式。看看 Yahoo!、 Flickr 和 Del.icio.us 就知道了。他们的 API 都很棒,也确实运作得很好。有些 API 完全不需要身份认证,另一些则强制 HTTP 认证,而大多数服务都有某种形式的令牌参数(Token Parameter)。问题在于没有一种通用的机器能识别的方式来描述这些东西。WADL 可能跟 WSDL 描述服务的方式很相似,但谁又在乎呢?规范差不多 14 页那么长,你可以读它,理解它,甚至真的实现它。Marc Nottingham 做了一个 WADL 到 HTML 的转换工具,Marc Hadley 也有一个 WADL 工具(现在属于 SUN),终于,现在有了 REST Describe & Compile。可能 WADL 不是 Web Service 的万能药,但它的用处是实实在在的。它让你能够完成你的工作,管它是不是纯粹的 REST,是不是 POX,是不是 RESTful,或者其它什么东西,能用就行。

InfoQ:你对未来的版本已经有什么计划了吗?

TS:目前程序完全在客户端运行。这样做有很多优点,但是,长远来说,这限制了它的能力。可能有一天会出现一个 WADL2Anything 的在线服务,大家向它发出 WADL 请求就可以传回生成的代码。人们应该能够把他们的 WADL 存储在网上,让其他人免费使用。就像是 Web Service 版的 CDDB(译者注:CDDB 是提供唱片资料的网站)。这是比较接近幻想的计划,首先要完成的还是一些实在的目标:提高代码生成能力,增加对 XML Schema 的支持,改进语法高亮,让 REST Compile 模块支持更多更多的语言……

InfoQ:非常感谢!

查看英文原文: REST Describe and Compile

2007-06-21 02:071162
用户头像

发布了 225 篇内容, 共 71.0 次阅读, 收获喜欢 52 次。

关注

评论

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

淘宝天猫商品评论API接口:用户反馈实时分析,驱动电商增长

技术冰糖葫芦

API Explorer API 调试 API 文档 API 协议

通过引入火山引擎“数据飞轮”,头部美图类APP找到下一个增长点

新消费日报

解锁京东 APP 商品详情的 API 接口获取方法

Noah

高效办公智能助手—办公小浣熊

小月亮

数据分析 智能办公 办公小浣熊 商汤科技 代码小浣熊

OpenNJet 3.0 版本正式发布!

通明湖

万字长文聊聊Web3的组成架构

Keegan小钢

区块链 去中心化 web3 Web3.0

低代码研发项目管理流程优化:提效与创新的双重驱动

不在线第一只蜗牛

低代码 项目开发

英伟达开源 RTX Remix 技术,用 AI 重制经典游戏;Luma 发布首尾帧功能可快速补全视频丨 RTE 开发者日报

声网

万字长文解析AI Agent技术原理和应用

华为云开发者联盟

人工智能 华为云 大模型 华为云开发者联盟 企业号2024年7月PK榜

性能测试:主流性能剖析工具介绍

霍格沃兹测试开发学社

云手机如何助力企业提升海外业务效率?

Ogcloud

云手机 海外云手机 云手机海外版 云手机群控

IoTDB 社区出品|CommunityOverCode Asia 2024 专题介绍之 IoT

Apache IoTDB

IoTDB 社区出品|CommunityOverCode Asia 2024 专题介绍之 IoT

Apache IoTDB

Coze+免费API,快速打造你的定制化AI机器人

幂简集成

人工智能 开发 API

Web3 游戏周报(6.30 - 7.06)

Footprint Analytics

链游

DDoS 攻击再破记录,欧洲最大云服务商OVHcloud甩锅Mikrotik

网络安全服务

云服务 云安全 DDoS 黑客攻击 DDoS 攻击

Redis 高阶应用

不在线第一只蜗牛

数据库 redis 缓存

软件测试学习笔记丨Allure2报告中添加用例标题

测试人

软件测试

3s->30ms!MySQL 生产环境 GROUP BY 优化实践

爱可生开源社区

MySQL SQL优化

海外云手机的性价比怎么样?

Ogcloud

云手机 海外云手机 云手机海外版 云手机群控 海外社媒运营

业务系统核心模块资料访问性能优化实战

鲸品堂

查询 业务 企业号2024年7月PK榜

数据库容灾 | MySQL MGR与阿里云PolarDB-X Paxos的深度对比

阿里云数据库开源

Thomas谈REST Describe & Compile_SOA_Stefan Tilkov_InfoQ精选文章