REST服务的最佳用途是什么?

REST服务的最佳用途是什么?,rest,Rest,我知道像Facebook这样的网站现在正在使用REST服务,但我想知道其他使用REST的应用程序,以及是否存在使用REST比其他方法更可靠的特定情况。SOAP是REST最受欢迎的替代方案,我还发现了一些很好的链接,描述了它们的差异以及何时使用它们: 它的要点是REST比它的替代品(特别是SOAP)简单得多,当您只需要基本功能(创建/读取/更新/删除)并且您的服务是无状态的时,应该使用REST 如果您想要一个使用REST的示例应用程序,则不需要。(我脑子里想不出其他的了。)除此之外,很多

我知道像Facebook这样的网站现在正在使用REST服务,但我想知道其他使用REST的应用程序,以及是否存在使用REST比其他方法更可靠的特定情况。

SOAP是REST最受欢迎的替代方案,我还发现了一些很好的链接,描述了它们的差异以及何时使用它们:

它的要点是REST比它的替代品(特别是SOAP)简单得多,当您只需要基本功能(创建/读取/更新/删除)并且您的服务是无状态的时,应该使用REST


如果您想要一个使用REST的示例应用程序,则不需要。(我脑子里想不出其他的了。)除此之外,很多网站都在使用它,比如Flickr、del.icio.us、Bloglines和Technorati。

有很多REST界面:,这是两个很好的例子


REST非常适合于简单的数据交互和无状态连接(类似于HTTP本身)。SOAP是一种常见的替代方案,通常用于更复杂的连接。REST现在非常流行,如果您刚刚了解为什么需要数据接口,那么REST是一个很好的起点。设计REST接口容易学习,入门门槛低。

当数据的最终目标是CRUD操作时,REST是有效的,通常在web UI中,通常使用AJAX、Flash、Silverlight之类的体验,而不考虑安全性、加密和事务,但是,如果您的需求包括前面提到的任何类似企业的功能(事务、加密、互操作性等),那么SOAP就是解决方案。

有很多例子。GData和Atom-Pub协议可能是最好的。Twitter似乎也有一个很好的RESTAPI。亚马逊的S3服务也相当“RESTful”。不幸的是,许多声称是RESTful的服务违反了REST的核心原则,正如RoyFielding在他的著作中描述的REST架构风格一样

REST是一种体系结构样式,不是定义的标准或实现中的集合。这使得说什么是REST服务和什么不是REST服务变得更加困难,这就是为什么您经常听到“RESTful”


REST可以是SOAP、XMLRPC以及某些情况下的DCOM和CORBA的一个很好(而且很简单)的替代品。它可以是促进基本分布式计算的一种非常简单的方法,也可以是公开API的一种简单方法。。。特别是因为它与无处不在的HTTP完美集成。

REST与CRUD数据服务无关。是的,您可以使用REST来执行类似CRUD的服务,但这就像说正则表达式用于解析电子邮件地址一样

这是迄今为止我在REST与SOAP/RPC辩论中看到的最好的演示


REST更关注于解决分布式客户机/服务器交互,而不是处理服务器到服务器的交互。REST是在用户面前获取内容,以便他们可以选择如何处理这些内容。REST并不是要创建一个基于Http的数据访问层来将应用程序逻辑与其数据存储解耦

AtomPub是一个很好的REST实现。Netflix API是最好的商业REST API之一。twitterapi无法满足大多数RESTful约束

如果您需要有关REST的准确信息,请访问以下位置:

不要听大供应商的话,他们更感兴趣的是让现有产品符合流行语


后续行动:

我认为REST接口比服务器到服务器的交互更适合于客户机/服务器交互,这有几个原因。这只是我的观点,我并不是说这个观点是由我以外的任何人持有的

多对一比率 当您支持多个客户端访问单个服务器时,缓存和无状态服务器的好处变得更加明显。服务器-服务器通信通常为1-1,很少有大量服务器与单个服务器通信

松耦合 剩下的就是松耦合。其思想是,您可以继续改进服务器,而无需更新客户端。如果您正在考虑在服务器a上实现REST服务,该服务将由位于同一房间中的服务器B调用,那么松耦合的好处就会减少。在两台机器上更新一个软件不会让你丧命

超媒体 超媒体约束是基于当前应用程序状态为用户提供选择。REST接口支持超链接系统的特别探索。服务器通信往往侧重于实现特定任务。e、 g.处理这批数据。根据计划触发这些事件。本质上,没有用户坐在那里决定走哪条路。已经基于参数和条件预先确定了路径

演出 在服务器通信场景中,实现最大吞吐量可能至关重要。二进制协议可能比Http更合适。在服务器到服务器的通信类型中,延迟可能是至关重要的。在一个一端由人驱动的客户机-服务器环境中,性能要求是完全不同的,我相信其余约束更适合这种类型的交互

互操作性 REST建议使用标准媒体类型作为HTTP有效负载。这鼓励人们意外地重复使用所提供的服务。我认为,与针对其他服务器的服务相比,重用客户机应用程序使用的服务的机会要多得多

在设计REST接口时,我喜欢认为服务的使用者是一个由最终用户直接控制的软件。这不是巧合