AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

Topaz Video AI:一键提升视频画质,让回忆更清晰!

Rose

人与AI协作的未来:共存还是竞争?

天津汇柏科技有限公司

AI 人工智能

HashData 数智一体化平台:践行「数据+AI」策略,助力企业释放数据价值

酷克数据HashData

2024央国企十佳上云典型案例,拿下!

天翼云开发者社区

云计算 AI 公有云 混合云 大模型

获取1688商品SKU信息API接口及实战应用

科普小能手

数据挖掘 数据分析 电商 API 接口 1688 API

数字先锋 | “点击就成片”,中国电商人是懂做生意的!

天翼云开发者社区

云计算 存储 智能算力

Babylon.js 开发框架的优缺点分析

北京木奇移动技术有限公司

软件外包公司 webgl开发 babylon.js

一文教你如何本地部署玩转DeepSeek-V3,免费体验100度算力包跑通!

九章云极DataCanvas

开发 #编程 DeepSeek v3

Three.js 的优缺点分析

北京木奇移动技术有限公司

three.js 软件外包公司 webgl开发

通过数据驱动的方式实现自动化测试框架封装

测试人

软件测试

爆肝整理!一文带你吃透软件测试

测吧(北京)科技有限公司

测试

CST如何计算有匹配的多天线效率?CST软件代理

思茂信息

cst cst操作 CST软件

小红书冲上热搜,大家都听说了吗?

王中阳Go

Go 面试 小红书

HarmonyOSNext 端云一体化(1)

万少

HarmonyOS NEXT

什么是DNS缓存?DNS缓存有什么用?

国科云

FlowJo 10:流式细胞数据分析的巅峰之作,解锁生命科学的无限可能!

Rose

Royal TSX for Mac:一站式远程管理利器,效率与安全并存的终极选择!

Rose

Vector Magic for Mac:一键将图片转为矢量图,设计更高效!

Rose

HttpRunner 接口测试框架

测试人

软件测试

Byteman 使用指南(一)

FunTester

【极致观影】Movist Pro:重新定义你的家庭影院体验!

Rose

Commander One Mac:双窗口管理,文件操作新纪元!

Rose

Thomas谈REST Describe & Compile_SOA_Stefan Tilkov_InfoQ精选文章