最近我不得不编写10行.NET代码来调用REST Web服务。这是非常常规和日常的代码,因此不是问题。然而,这让我想知道,REST Web服务有什么好处,需要编写一些方法来调用,而不是像WCF Web服务那样只需添加服务引用并具有“API感觉”(即类/方法等。)
由于
答案 0 :(得分:2)
它还具有更加开放的奢侈品。任何可以编写的人都可以创建一个命中REST api的链接。我想不出任何更容易获得的东西。
答案 1 :(得分:2)
REST和SOAP在不同情况下都很棒。我不确定您要拨打的服务的性质以及服务的位置,但有时人们说要通过互联网使用 RESTful服务,并在公司内使用基于SOAP的。
你提到了:
您只需添加服务引用并拥有的WCF Web服务 “API感觉”
假设您的意思是基于SOAP的服务,您所说的对VS用户来说是正确的。如果您尝试使用Apple的XCode访问服务该怎么办?查看this question,看看替换Stubs
VS需要多少行代码才能在XCode中为您生成。
同样通常 RESTful消息比SOAP消息更轻量级(查看this),这使得它们在带宽成为问题时更有效(例如移动电话)。
因此,在考虑您正在使用的服务的所有方面时,您将更好地理解为何使用REST或SOAP。
答案 2 :(得分:1)
使用HTTP本身作为API的REST;它更像是一种风格而不是其他任何东西。熟悉HTTP的人会立即理解精心设计的服务。没有涉及WSDL或SOAP或XML。
我认为它更轻。它对客户来说当然更容易,因为它们不需要SOAP客户端。仅仅是HTTP连接就可以了。
与开发人员相比,好处更多地与客户有关。
答案 3 :(得分:1)
您正在使用.Net来使用该服务,该服务具有处理SOAP服务的工具。假设您使用的是移动设备,浏览器或大型机。然后,SOAP服务将更加丰富,并且可能很难实现。 REST与HTTP密切相关,几乎所有技术堆栈都支持它,因此它能够覆盖尽可能多的客户端。这就是为什么在我决定使用SOAP和REST时,我会问自己谁会消耗它。如果它只是少数.Net或其他复杂的客户端,那么SOAP可能没问题,如果我需要尽可能大的覆盖范围,那么REST是更好的选择。
答案 4 :(得分:1)
由于REST以其设计方式使用HTTP,因此您可以在几乎任何平台和任何语言上开发客户端。实现服务器也是如此。据认为,许多网站已经是RESTfull。您无需了解能够使用API的所有WS- *内容。您可以使用类似cURL的东西来与REST服务进行交互。使用SOAP,它要复杂得多。
REST还支持自定义内容类型,因此可以在同一个URL(例如http://example.com/customers
)上执行GET,并通过简单地更改标题来获取XML,JSON,CSV或XLS响应。这当然取决于服务的实施。有些人会为http://example.com/customers.xml
或http://example.com/customers.xls
添加网址扩展名,以达到同样的效果。但最重要的是,您可以将流直接保存到磁盘并使用它。将信息发送到服务器时也是如此。您可以以原始格式将其作为XML,JSON,CSV,XLS发送。 SOAP限制了您传输数据的方式和格式。
一个不错的RESTfull服务也可以导航,这意味着对另一个资源的引用只是我可以访问的链接(类似于HTML)。使用SOAP几乎不可能。
SOAP安全性可能变成一个复杂的野兽。使用REST服务,简单的HTTP身份验证可能就足够了,或者您可以使用OAuth和Open ID 2.0。
使用REST可以获得更小的有效负载。这非常适合移动环境和这些应用程序的整体性能。
如果您通过API获利,您会发现支持API更简单,并且可以为大多数客户提供API。我们销售基于SOAP服务的产品,由于其复杂性和缺乏对WCF实现SOAP的支持(通过一些JAVA框架),我们发现支持相当痛苦。
也就是说,REST服务的开发人员确实能够确保它真正开放,轻便,简单且易于使用。有效载荷和URL需要很好地记录。 WSDL为SOAP做到了这一点,并帮助实现了一些目标。
答案 5 :(得分:0)
肥皂数据格式是XML。它的有效载荷大小比Json大很多。您可以谷歌进行性能测试比较b / w Json和xml。 Rest不会对数据格式施加约束。所有类型的客户都可以轻松使用休息。无论是.net客户端还是在浏览器中运行的JavaScript。您也可以通过JavaScript调用soap服务,但这很乏味且难看。 最后我们都想成为牧群的一员: - )