支持REST架构Web服务:在规范中的应用

日期: 2008-03-19 作者:William Brogden翻译:Eric 来源:TechTarget中国 英文

REST是英文Representational State Transfer的缩写,中文翻译为“表述性状态转移”,它是由Roy Fielding在他2000年的博士论文中提出的一个术语。毫无疑问,这篇论文是近几年来最有影响力的学术研究成果之一。Fielding的论文题目“架构风格与基于网络的软件架构设计”(“Architectural Styles and the Design of Network-based Software Architectures”)强调说, REST架构应用程序的创建意味着一种风格,或者说是一种思考问题的方式,而不是一个机械的规则应用,而根本的规则应该是GET、PO……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

REST是英文Representational State Transfer的缩写,中文翻译为“表述性状态转移”,它是由Roy Fielding在他2000年的博士论文中提出的一个术语。毫无疑问,这篇论文是近几年来最有影响力的学术研究成果之一。Fielding的论文题目“架构风格与基于网络的软件架构设计”(“Architectural Styles and the Design of Network-based Software Architectures”)强调说, REST架构应用程序的创建意味着一种风格,或者说是一种思考问题的方式,而不是一个机械的规则应用,而根本的规则应该是GET、POST、DELETE、PUT、OPTIONS及HEAD这些HTTP方法都只能用于特定目的。 

  对资源的思考

  Web地址的概念是“对抽象或物理资源的标识" (RFC 2396,1998),它是万维网概念的核心。而由于研究人员已经探索出了多种描述方法,所以这个概念已变得相当模糊。那些曾开发SOAP、网络服务编程的远程过程调用(RPC)风格的一些人表示,他们采用REST风格时,有时候会碰到一些困难。现在,期望URL直接指向进程或是服务器上的离散文件已成为一种趋势。为了说明REST观点的特殊之处,我们引述Fielding的论文如下:

  资源不是被存储的对象,也不是服务器处理存储对象的一种机制。资源是一个概念性映射——服务器收到(标识映射)的标识符,并将其应用于当前的映射过程(通常是特殊深度树遍历与/或哈希表的组合),找到并执行当前负责的处理程序,然后该处理程序执行将选择适当的基于请求内容的动作+响应。所有这些执行过程-具体的事务题都隐藏在网络界面下;一般客户不能利用这些特性,只有通过网络界面的认可才可以。

  SOAP和REST的要求对比

  网络服务的核心问题是解释请求,并按规定路线将请求发送到正确的进程中,并获得返回的期望表示法。基于SOAP的服务不仅要查看请求报头,而且也要解析XML格式的请求主体,并返回XML格式的文本。

  REST架构服务只需要检查请求报头和URL,确定处理该请求的进程和返回的资源表达法。重要的是,要记住一个特定的资源可以有好几种不同的表达法。举例来说,日历任命可能会以文本、HTML、XML、PDF或图像的格式返回。

  REST研究产业的日益发展,引起了网络服务相关工具——例如标准、语言图书馆和集成驱动电子设备(IDE)——产品开发商对新思路的探索。我们看到,他们将REST纳入到现有的工具中的尝试,也看到他们对全新的方法的采用。首先,让我们看看REST在最近规范中的应用。

  WSDL 2.0规范中的REST应用

  在认定开发商越来越多的从SOAP开发转向REST风格开发后,W3C工作组在最近发表的WSDL 2.0规范中,纳入了他们所称的“HTTP支持”。这个版本制作了许多年,是一项对1.0版本的重大修订,采用重组降低了其复杂性。在理论上,一个WSDL 2.0文件可以描述SOAP程序,也可以描述REST程序。以前用来从WSDL文件创建网络服务的工具,将需要重大修改以适应WSDL 2.0。

  WADL:一种新方法

  开放源代码项目之一是GlassFish公司执行的WADL——网络应用描述语言。WADL文件以XML的格式对REST风格的网络服务做出了描述,称其适合创造Java客户端的计算机进程。同时为获取资源和路径,也提供了对这两项的柔性描述。

  JAX-RS REST架构网络服务中的Java API

  这个规范——按照Java Community Process公司提供的方法正在向JSR 311发展——还处于“编辑草稿”的阶段,其最新的版本发表于2007年12月4日。目前该规范仍然没有完成,还有许多悬而未决的问题。其目的是,在POJO (普通Java对象)类中使用Java注解,从而使POJO类能以REST架构Web资源显现出来。使用Java注解当然需要Java 1.5版本或更新的版本,这对大多数用户来数,应该不成问题。Jax-RS不能提供服务发现或是协助客户端编程,但却能保证对现有的servlet容器和Jax-WS工具组的兼容。

  纯文本规范

  在陷入XML服务描述语言的麻烦之前,让我们转过身往回走一点,去考虑那些简单的方法。雅虎公司关于创建REST请求的说明文件,只是满载例子的文本性描述。毫无疑问,各种搜索服务有其各自的指令集合,但反过来,它们都附有简单的文字解释。REST纯粹主义者会说,雅虎的请求并不是百分之百的REST,因为他们使用了URL查询格式化,包括一个指定期望表示法的参数,而不是一个请求报头。但是不管怎样,雅虎的请求也可以完成工作,而且雅虎公司为不同的描述语言提供了不同的范例以及不同的软件开发工具包(SDK)。

  程序员的看法

  现在,如果我必须写一个简单的REST架构Web服务的话,我就会用我熟悉的Java servlet编写请求解释。如果要对该服务进行描述,使其他人建立客户群的话,我会写一个浅显的文字解释,并借助WADL描述进行补充。不过,如果我检查到最新的编程工具包,在下一篇文章中,也许我会改变主意。

翻译

Eric
Eric

相关推荐

  • SAP收购CallidusCloud 与Salesforce竞争

    一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]

  • API开发与管理大作战

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

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

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

  • API设计如龙生九子 各不相同

    IT咨询管理公司CA Technologies对API产业做了个问卷调查,问卷内容涉及API设计风格以及管理部署的新动向。调查结果表明,JSON与XML可谓两分天下。