我知道像Facebook这样的网站现在正在使用REST服务,但我想知道其他使用REST的应用程序,如果有特殊情况,使用REST比其他方法更有保证。
答案 0 :(得分:36)
REST不是关于CRUD数据服务。是的,您可以使用REST来执行类似服务的CRUD,但这就像说正则表达式用于解析电子邮件地址。
Here是迄今为止我在REST与SOAP / RPC辩论中所见过的最佳演示文稿。
REST更倾向于解决分布式客户端/服务器交互,而不是处理服务器到服务器交互。 REST是关于在用户面前获取内容以便他们可以选择如何处理它。 REST不是要创建基于Http的数据访问层来将应用程序逻辑与其数据存储分离。
Atom Pub是一个很好的REST实现。 Netflix API是最好的商业REST api之一。 Twitter API失败了大多数RESTful约束。
如果您想获得有关REST的准确信息,请访问以下地点:
不要听取大型供应商关于他们更感兴趣的主题,使他们的现有产品符合流行语。
随访:
我认为REST接口比服务器到服务器交互更适合客户端/服务器交互有几个原因。这只是我的意见,我并不是要声称这个观点是由我以外的任何人持有的!
当您支持许多客户端访问单个服务器时,缓存和无状态服务器的好处变得更加明显。服务器 - 服务器通信通常为1-1,很少有大量服务器与单个服务器通信。
REST就是松散耦合。我们的想法是,您可以继续改进服务器,而无需更新客户端。如果您正在考虑在服务器A上实现REST服务,该服务将由位于同一房间中的服务器B调用,那么松散耦合的好处就会减少。在两台机器上更新软件都不会让你失望。
超媒体约束是基于当前应用程序状态为用户提供选择。 REST接口支持对超链接系统的即席探索。服务器 - 服务器通信倾向于专注于实现特定任务。例如处理这批数据。根据计划触发这些事件。本来就没有用户坐在那里决定要遵循哪条路径。路径已根据参数和条件预先确定。
在服务器 - 服务器通信方案中,实现最大吞吐量可能至关重要。二进制协议可能比Http更合适。延迟在服务器到服务器类型的通信中可能是至关重要的。在客户端 - 服务器环境中,一端由人驱动,性能要求完全不同,我相信REST约束更适合这种类型的交互。
REST建议使用标准媒体类型作为HTTP有效负载。这鼓励偶然重复使用所提供的服务。我认为有更多机会重新使用供客户端应用程序使用的服务,而不是针对其他服务器的服务。
在设计REST接口时,我喜欢认为服务的使用者是一个由最终用户直接控制的软件。将Web浏览器称为用户代理并非巧合。
答案 1 :(得分:3)
SOAP是REST最受欢迎的替代品,我发现了一些很好的链接来描述它们之间的区别以及何时使用它们:
它的要点是REST比其替代品(尤其是SOAP)简单得多,并且应该在您需要的只是基本功能(创建/读取/更新/删除)时使用,并且您的服务是无状态的。< / p>
如果您想要一个使用REST的示例应用程序,CouchDB会这样做。 (我无法想到任何其他问题。)最重要的是,很多网站都使用它,例如Flickr,del.icio.us,Bloglines和Technorati。
答案 2 :(得分:1)
那里有很多例子。 GData和Atom Pub协议可能是最好的。 Twitter似乎也有一个不错的REST API。亚马逊的S3服务也非常“RESTful”。不幸的是,许多声称是RESTful的服务违反了REST的核心原则,正如Roy Fielding在描述REST架构风格的dissertation中所阐述的那样。
REST是一种架构风格,而不是定义的标准或实现中的集合。这使得更难以说出什么是REST服务,这就是为什么你经常会听到“RESTful”。
REST可以是SOAP,XMLRPC的一种很好的(也是简单的)替代方案,在某些情况下,还可以是DCOM和CORBA。它可以是一种非常简单的方式来促进基本的分布式计算和一种公开API的简单方法......特别是由于它可以很好地集成到无处不在的HTTP中。
答案 3 :(得分:0)
有很多REST接口:flickr和Google's data APIs作为两个重要的例子浮现在脑海中。
REST非常适合简单的数据交互和无状态连接(类似于HTTP本身)。 SOAP是一种常见的替代方法,通常用于更复杂的连接。如今,REST非常受欢迎,如果您只是想了解为什么要使用数据接口,那么它是一个很好的起点。设计REST接口易于学习,入门门槛低。
答案 4 :(得分:0)
您应该考虑客户的需求!构建一个没有人愿意消费的大型SOAP服务将浪费你的时间。同样,如果你的潜在用户沉浸在SOAP中,那么也许你应该给他们。
如果您不知道用户想要什么,请考虑行业的情绪。如今,大多数公开API的公司都会公开REST API。我非常喜欢Foursquare如何记录他们:https://developer.foursquare.com/overview/
答案 5 :(得分:-1)
REST是有效的,当您的数据的最终目标是CRUD操作时,通常在Web UI中,通常使用AJAX,Flash,Silverlight类型的体验,当安全性,加密,事务不是关注点,但是如果您的要求包括之前提到过的任何企业(交易,加密,互操作性等),SOAP就是解决方案。