NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

Flask已死,FastAPI是未来

Bob Lin

Python django flask FastApi python web

全渠道、全触点、全用户 | 数智化运营赋能企业生意“无边界”

用友BIP

数智营销

千亿级工业大数据的最优方案!智光电气的时序数据库应用

TDengine

tdengine 时序数据库 国产数据库

Beyond Compare 4 for Mac:功能强大与简单易用的完美结合

影影绰绰一往直前

天猫商品详情接口json 格式返回介绍

tbapi

天猫商品详情数据接口 天猫商品API接口 天猫API接口

《实现领域驱动设计》笔记——架构

EquatorCoco

架构 DDD 技术架构

如何利用烛龙和谷歌插件优化CLS(累积布局偏移) | 京东云技术团队

京东科技开发者

前端 页面布局 CLS

Amazon CodeWhisperer 体验

亚马逊云科技 (Amazon Web Services)

人工智能 云上探索实验室 Amazon CodeWhisperer

finally中的代码一定会执行吗?

王磊

Java 面试题

微店商品API:电商的实时数据利器

Noah

Sui 概览:技术特色与生态发展现状

Footprint Analytics

区块链 Sui Layer 1

万界星空科技线束行业MES系统

万界星空科技

数字化转型 工业互联网 mes 线束行业 线束mes

万界星空MES安灯管理:优化生产监控的重要工具

万界星空科技

数字化转型 mes 安灯系统 mes安灯管理 生产管理

什么是 DDoS ?如何识别和应对DDOS攻击

德迅云安全杨德俊

Web 安全 DDoS

智能制造解决方案之智能仓储

天津汇柏科技有限公司

仓储控制系统 解决方案 智能制造 仓储执行系统

一分钟轻松制作AI数字人播报视频

青否数字人

数字人

第13期 | 用友BIP项目云,助力科研类项目管理实现精智核算

用友BIP

项目管理

Flutter Web 和 H5

A __Sun A0 .

flutter HTML5, CSS3 flutter for web

灯具照明行业智能制造MES系统解决方案

万界星空科技

数字化转型 工业互联网 mes 智能照明 灯具mes

记一次生产慢sql索引优化及思考 | 京东云技术团队

京东科技开发者

数据库 SQL优化 MySQL、

开发者能力机制解析,玩转Sermant开发

华为云开源

服务治理 sermant 字节码增强框架

测试用例设计方法六脉神剑——第五剑:化气为型,场景用例破云 | 京东物流技术团队

京东科技开发者

测试 测试用例 场景法

米哈游宣布启动鸿蒙原生应用开发

新消费日报

极限科技(INFINI labs)荣获中国信通院大数据“星河”标杆案例

极限实验室

中国信通院 极限科技 “星河”标杆案例

Axure RP 9 for Mac:功能强大与高效协作的完美结合

影影绰绰一往直前

Apache Doris 2.0.3 版本正式发布

SelectDB

数据库 大数据 数据湖 OLAP Doris

在CentOS上搭建NFS服务器

麦兜

nginx+lua+redis实现灰度发布 | 京东云技术团队

京东科技开发者

lua nginx redis 服务器

CodeArts 五年磨一剑,深耕信创软件开发工具

华为云PaaS服务小智

ide 全球软件开发大会

QUIC在零信任解决方案的落地实践

权说安全

火山引擎DataLeap:助你实现从数据研发1.0到数据研发3.0的跨越

字节跳动数据平台

大数据 数据中台

Thomas谈REST Describe & Compile_SOA_Stefan Tilkov_InfoQ精选文章