吴志强的回答:看起来在web API协议之争(如果曾经有过)中,潮流正稳步的转向REST,SOAP已经被逼退。Web开发者们选出了他们心目中的目标,他们要RESTful APIs。下面的是2008年和2010年各种不同的API协议部署量的对比图,来源于ProgrammableWeb上的2000多个web API目录数据。 来源: ProgrammableWeb, May 2010.非常的有趣,2年前REST就已经成为web API部署方式的主流了,而且一直保持这种发展势头。如果这还不够有说服力,那让Google来帮着说句话。下面的图表把趋势显示的更加清楚。人们对REST API 和 SOAP API 的兴趣对比:来源: Google Insights for Search.可以看出来,目前REST不仅仅是占有统治地位的API模式,而且人们对它兴趣度也快速上升,而SOAP的却在下降。对这些,很多人可能已经知道了,特别是从事web开发的人,但现在有了确切的数字来证明这种假设了,岂不更好?[英文出处]:REST in peace, SOAP 笨笨ノ牵着你的回答:rest api 开发 学习笔记 概述 rest 从资源的角度来观察整个网络,分布在各处的资源由uri确定,而客户端的应用通过uri来获取资源的表示方式。获得这些表徵致使这些应用程序转变了其状态。随着不断获取资源的表示方式,客户端应用不断地在转变着其状态,所谓表述性状态转移(representational state transfer)。 这一观点不是凭空臆造的,而是通过观察当前web互联网的运作方式而抽象出来的。roy fielding 认为, “设计良好的网络应用表现为一系列的网页,这些网页可以看作的虚拟的状态机,用户选择这些链接导致下一网页传输到用户端展现给使用的人,而这正代表了状态的转变。” rest是设计风格而不是标准。rest通常基于使用http,uri,和xml以及html这些现有的广泛流行的协议和标准。 资源是由uri来指定。 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应http协议提供的get、post、put和delete方法。 通过操作资源的表现形式来操作资源。 资源的表现形式则是xml或者html,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。 rest的要求 客户端和服务器结构 连接协议具有无状态性 能够利用cache机制增进性能 层次化的系统 随需代码 - javascript (可选) restful web 服务 restful web 服务(也称为 restful web api)是一个使用http并遵循rest原则的web服务。它从以下三个方面资源进行定义:uri,比如:http://example.com/resources/。 § web服务接受与返回的互联网媒体类型,比如:json,xml ,yaml 等。 § web服务在该资源上所支持的一系列请求方法(比如:post,get,put或delete)。 该表列出了在实现restful web 服务时http请求方法的典型用途。 http 请求方法在restful web 服务中的典型应用 资源 get put post delete 一组资源的uri,比如http://example.com/resources/ 列出 uri,以及该资源组中每个资源的详细信息(后者可选)。 使用给定的一组资源替换当前整组资源。 在本组资源中创建/追加一个新的资源。 该操作往往返回新资源的url。 删除 整组资源。 单个资源的uri,比如http://example.com/resources/142 获取 指定的资源的详细信息,格式可以自选一个合适的网络媒体类型(比如:xml、json等) 替换/创建 指定的资源。并将其追加到相应的资源组中。 把指定的资源当做一个资源组,并在其下创建/追加一个新的元素,使其隶属于当前资源。 删除 指定的元素。 put 和 delete 方法是幂等方法。get方法是安全方法 (不会对服务器端有修改,因此也是幂等的)。 不像基于soap的web服务,restful web服务并没有的“正式”标准。 这是因为rest是一种架构,而soap只是一个协议。虽然rest不是一个标准,但在实现restful web服务时可以使用其他各种标准(比如http,url,xml,png等)。 rest的优点 可以利用缓存cache来提高响应速度 通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性 浏览器即可作为客户端,简化软件需求 相对于其他叠加在http协议之上的机制,rest的软件依赖性更小 不需要额外的资源发现机制 在软件技术演进中的长期的兼容性更好 http://wenku.baidu.com/view/74f6e4bec77da26925c5b036.html.(可以看一下) |