什么是Web API和Web服务的区别?

156

一个Web API和一个Web服务有什么区别吗?还是它们是一样的?


参见:API vs. Webservice [closed] - hippietrail
2
请参阅程序员问答社区:Web API和Web服务之间的区别? - hippietrail
3
API 是公开的接口,而服务则是在后端运行的实现。 - Govinnage Rasika Perera
1
请谨慎阅读答案。其中一些可能已过时或无效。 - Menuka Ishan
只是添加了一个更加出色的解释 - https://www.quora.com/What-is-the-difference-between-web-services-and-API - Ashish Shetkar
13个回答

75

一个Web服务通常提供一个WSDL,从中可以自动创建客户端存根。Web服务基于SOAP协议。 ASP.NET Web API是一个较新的微软框架,它帮助您构建基于REST的接口。响应可以是JSON或XML,但由于Web API不像Web服务那样提供服务描述,因此无法自动生成客户端。 因此,使用哪种技术取决于您的要求。也许甚至WCF更适合您的需求,请查看MSDN文档。


14
Web服务不一定基于SOAP协议。 - logi-kal
10
技术上过时的答案。 - Arun Raaj
5
"ASP.NET Web API" 是微软的一个框架,不是指“Web API”本身。 - aradalvand
1
过时的答案,请访问此链接 https://microsoft-techies.blogspot.com/2014/03/difference-between-api-and-web-service.html - Ganesh Karewad

42

Web服务和Web API之间的基本区别:

Web服务:

1)它是基于SOAP的服务,并将数据返回为XML。

2)它仅支持HTTP协议。

3)它不是开源的,但可以被任何理解XML的客户端使用。

4)它需要SOAP协议在网络上接收和发送数据,因此它不是轻量级的架构。

Web API:

1)Web API是基于HTTP的服务,默认情况下返回JSON或XML数据。

2)它支持HTTP协议。

3)它可以在应用程序或IIS中托管。

4)它是开源的,可以被任何理解JSON或XML的客户端使用。

5)它具有轻量级的架构,非常适合带宽受限的设备,如移动设备。


9
网络服务可以托管在许多地方,不仅仅是IIS。 - Ignacio Soler Garcia
7
几乎所有的观点都是错误的。我不明白为什么会有40个用户点赞。 - logi-kal
1
@horcrux 我同意。Web服务并不一定是基于SOAP的服务。 - Ryan Shillington
我见过的最令人困惑的答案。 - mhrsalehi

25

API 与 Web Service

以下是链接文章的简要概述:

概述:

  1. 所有Web服务都是API,但不是所有API都是Web服务。

  2. Web服务可能无法执行API所执行的所有操作。

  3. Web服务仅使用三种使用样式进行通信:SOAP、REST和XML-RPC,而API可以使用任何通信样式。

  4. Web服务始终需要网络才能运行,而API在其运行过程中不需要网络。

  5. API可直接与应用程序进行交互,而Web服务是...

阅读更多:API 与 Web Service的区别| Difference Between | API vs Web Servicehttp://www.differencebetween.net/technology/internet/difference-between-api-and-web-service/#ixzz3e3WxplAv

请参考上面的链接获取完整答案。


11
问题是关于WebAPI和WebService之间的区别,而不是"API"。请问需要翻译什么内容? - Kulbhushan Singh
此外,第三点是不正确的。它是具有误导性的,只会让人们对“SOAP vs. REST”这个话题感到困惑。 - logi-kal

10

更多细节请访问此链接 示意图


3
为什么?从这张图片中看来,SOAP Web Services 似乎不能在智能手机上使用……或者甚至在桌面电脑上也不行?真的吗?有人强迫你在这些平台上读取 JSON 而不是 XML 吗? - AndreaCi
如果读取XML并不意味着它是基于SOAP的服务,REST也支持逗号分隔值(CSV)、JavaScript对象表示法(JSON)和真正简单的信息聚合(RSS)。 - Adiii

8
如果您需要的话,Web服务就是Web API。具体而言,Web API通常意味着RESTful(基于HTTP),而Web服务通常意味着SOAP+WSDL(+HTTP或SMTP或JMS)。通常,RESTful Web服务与Web服务(WSDL,SOAP)形成对比,但最近出现了大写“W”的RESTful Web服务的术语,它意味着RESTful + WSDL + SOAP。请查看此图表以了解三个概念之间的区别:http://www2.mokabyte.it/cms/figureproviderservlet?figureId=IUS-6NS-OBV_7f000001_19624184_5621ef4e--Fig02.jpg希望这可以帮到您!

3

Web服务与Web API完全相同—只是在底层数据格式方面有些限制。两者都使用HTTP协议,都可以创建RESTful服务。不要忘记其他协议,如JSON-RPC——也许它们更适合。


1
现在有限制,难道不是“完全一样”的吗? - Ojonugwa Jude Ochalifu

2
  1. Web服务是一个开源协议和标准的集合,用于在系统或应用程序之间交换数据,而API是一种软件接口,允许两个应用程序相互交互,无需用户参与。
  2. Web服务用于REST、SOAP和XML-RPC通信,而API用于任何风格的通信。
  3. Web服务仅支持HTTP协议,而API支持HTTP/HTTPS协议。
  4. Web服务支持XML,而API支持XML和JSON。
  5. 所有的Web服务都是API,但并非所有的API都是Web服务。

2

API和Web服务都是通信手段。

唯一的区别在于,Web服务促进了两台机器在网络上的交互。API充当两个不同应用程序之间的接口,以便它们可以相互通信API是第三方供应商编写的可轻松与其他程序接口的方法。 Web服务旨在具有表现为机器可处理格式的接口,通常在Web服务描述语言(WSDL)中指定

所有Web服务都是API,但并非所有API都是Web服务。

Web服务仅是封装在HTTP中的API。


这篇文章提供了关于Web服务和API的良好知识。


0
在ASP.Net的上下文中,Web API是一个控制器,其基类为ApiController,并且不使用视图。 Web服务是从WebService派生的类,并具有自动生成WSDL的功能。默认情况下,它是一个SOAP api,但您也可以通过添加ScriptServiceAttribute来使用JSON。

-1

嗯,在微软世界中TMK可能是正确的,但在所有软件的世界中,包括Java / Python /等等,我相信它们没有区别。它们是相同的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接