RESTful服务描述语言

日期: 2009-03-26 作者:William Brogden 来源:TechTarget中国 英文

REST实质上是一门Web服务架构的哲学,它并不是一个像SOAP的标准。它以严谨精确的诠释HTTP1.1规则中规定的不同操作的作用以及GET、PUT、POST、DELETE和一些其它特征为重点。两年前我在这篇文章中便讨论过REST的特点,自从那时起我们已经看到持续增长的支持REST方式的服务,如Amazon的S3服务和google的Data APIs。   由于SOAP相关标准变得越来越复杂,开发人员开始关注REST,这种对REST的热衷,导致越来越多的服务都被称为RESTful,而事实上它们只是另一种形式的RPC。

例如严格的说,GET操作只表示资源的获取而不是更改。ACTIVEMQ开源信息服……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

REST实质上是一门Web服务架构的哲学,它并不是一个像SOAP的标准。它以严谨精确的诠释HTTP1.1规则中规定的不同操作的作用以及GET、PUT、POST、DELETE和一些其它特征为重点。两年前我在这篇文章中便讨论过REST的特点,自从那时起我们已经看到持续增长的支持REST方式的服务,如Amazon的S3服务和google的Data APIs。

  由于SOAP相关标准变得越来越复杂,开发人员开始关注REST,这种对REST的热衷,导致越来越多的服务都被称为RESTful,而事实上它们只是另一种形式的RPC。例如严格的说,GET操作只表示资源的获取而不是更改。ACTIVEMQ开源信息服务器可以通过GET操作读取消息,但若在读取之后删除消息,则需要RESTful接口。你可以在开发者的BLOG和论坛中查找到很多关于一个特殊的服务是否是REST的论证。简单来说,我始终遵守Fielding的最初的构想与HTTP1.1的规范。

  RESTful体系结构概要

  下述表格,在Fielding的学术论文中表5.1中,结合最新web例子给出了RESTful架构中的各种不同的数据元素。HTTP1.1协议提供了在Web服务中可以潜在使用的很多特性。例如,那些能够在一个请求中读取和使用if-modified-since标头的服务能够避免重复输出不变资源。有些返回某个图片的服务应该能够解释接受HTTP标头返回给客户端的首选资源类型。这似乎有理由期待对RESTful web服务的任何正式的描述语言应该尽可能多的覆盖这些“数据元素”。

         

  怎样去描述一个REST服务

  目前,大的服务如Yahoo、Amazon、Google和Flickr主要通过提供文字描述及代码例子让潜在的开发人员了解他们的HTTP服务接口,这足能证明虽然能够创建许多代码例子,但还是缺少专业的氛围让我们留意到正式的规范,这阻止了我们使用自动化测试工具和正式的SOA相关定义。
 
  Web服务描述语言—WSDL

  WSDL 1.0版本最初被发布为一个W3C的“注释”而不是标准,(1.1版本在2001年发布这个时候RESTful风格的Web Service还没有流行起来),在很多工具箱中被使用进行SOAP服务和客户端开发,但仍然没有提供REST风格服务的描述。

  WSDL 2.0版在2007年6月被作为一个W3C的推荐标准发布,在这个版本中试图包容和适应REST,但还是继续突出强调SOAP。这个发布版本中甚至都没有提供一个REST风格服务的例子,但幸运的是我在Wikipedia上找到一篇使用WSDL描述RESTful风格接口的例子,在这篇文章中把许多REST风格的Http请求映射到SOAP上,但是没有预先定义好在返回数据时怎样选择资源类型。我猜测这种方式只能用在你不得不同时使用SOAP和REST来发布同一个服务的时候。REST开发社区对WSDL 2.0版本的最初反应并不是很热情。
 
  Web应用程序描述语言—WADL

  WADL试图把基于HTTP的服务定义为人机可读,并且不再像他需要的那么复杂的XML格式描述语言。今年二月刚发布了最新的WADL规范草案的修订版,其中包含了几个重要的变化。很明显,关于一些有用的特性,基于Jersey(JAX-RS的参考实现)的符合REST(REpresentational State Transfer:表述性状态转移)的服务工具包的经验正在提供反馈信息。因此这并不是一个实体意义上的标准集。WADL规范主要立足于怎样书写一个符合REST的Web服务的以下特性:

  ·提供的资源以及如何为每一个资源构造URL
  ·支持的HTTP方法(GET、POST等等)
  ·请求中包含的参数和他们的基于XML Schema的类型
  ·响应的表示(媒体类型)
  ·简单的文本文件或者是XHTML(eXtension HTML)标记文件格式的附件

  总结

  WSDL和WADL都不会涉及到Fielding博士在他论文中所述的符合REST服务的方方面面。REST能够提供的一些很重要的特性根本就没有提到。许多人正在兴致勃勃地探索不需要拘泥于一种标准描述语言符合REST的服务。我个人认为,尽管WSDL能够在一些简化的应用场景下工作,但是,把需要描述所有REST样式操作的参数填充到2.0版本的WSDL里也许是不可能的。WADL是一个很好的语言,但是它的详细说明和工具还没有被开发出来。

相关推荐

  • API开发与管理大作战

    2014将会是API管理方法新旧PK的一年,据Delyn Simons说,她领导了Mashery开发者的外展团队。应用编程接口(API)的主流化和私有化在新的一年也将掀起波澜,她在波士顿“Future Insights Ultimate Developer Event 2013”大会上预测说。

  • API管理工具能否弥补REST与Web服务之间的鸿沟?

    随着企业学习如何通过RESTful利用现有服务,API管理工具正在引起轰动。API管理工具能否弥补REST与Web服务之间的鸿沟?

  • 公共API外包管理是否值得考虑?

    公共API外包管理是指聘请一个专家小组来解决可扩展性问题,同时也提出几套可替代的方案。

  • 最适合大数据应用的是SOA还是REST?

    跟所有的企业数据一样,大数据唯有通过应用投射给用户才有用。对于设计或重新设计大数据应用的架构师来说,一个关键问题是究竟是用SOA还是RESTful的API?