API和Web服务有什么区别?

16

据我所知,API和Web服务用于从其他网站获取数据。

那么它们之间有什么区别呢?

需要帮助!

编辑

有人能用适当的例子解释一下吗?

Twitter和Facebook的API是什么?我们可以将其视为访问其数据的函数或Web服务吗?


当你说它们必须是互相排斥的时,这听起来有些过分了。举个简单的反例,一个WSDL / SOAP生成器可以将一个“Web服务”转换成一个“API端点”(一个包装在该Web服务周围以访问公开操作的包装器)。 - user166390
10个回答

19

一个Web服务就像是HTTP服装下的API。


11

一个 Web 服务是通过互联网直接供其他计算机使用的东西(而不是人类)。

API 是应用程序编程接口。网站应用程序可能通过 Web 服务公开 API。然而,像 Excel 或 Word 这样的桌面应用程序具有与 Web 无关的 API(它们具有基于 VBA 和 COM 的 API)。

同样,服务器应用程序(例如 Joomla)可能具有基于 PHP 的 API,在服务器内部使用 - 即不一定涉及 Web 服务。


4
那么Web服务就是API吗?(一种针对特定服务或应用程序的定义编程接口。)以Project Server或SharePoint为例,它们通过其Web服务几乎完全控制其各自的模型。 - user166390

7

所有的网络服务都是API,但并非所有的API都是网络服务。一个是另一个的子集。


7
  1. Web服务是封装在HTTP中的API。
  2. 所有Web服务都是API,但不是所有API都是Web服务。
  3. Web服务可能没有执行API要执行的所有操作。
  4. Web服务需要网络,而API在其操作中不需要网络。

6

API (应用程序接口)是由一个程序员提供给其他程序员使用的方法和类列表,因此如果您在程序中使用Twitter或Facebook API,则可以使其与Twitter和Facebook协作,并实现许多有用的功能。 :-)

暴露API的方法有很多种(Java中的JAR文件或RMI,.net程序集,C/C++中的COM对象、DLL和.H文件,HTTP上的JSON,HTTP上的XML,许多自制方法)。

Web服务只是暴露API的另一种方式,在这种情况下,暴露方法的实际执行不是在您的计算机上进行的,而是在互联网上的其他计算机上进行的(在Web上-因此名称为“WebServices”)。


6

API并不一定需要基于Web。

Web服务也可能不会执行所有完整API所期望的操作。


一个Web服务不是编程语言无关的吗?API不就是Web服务的具体实现,作为库来简化Web服务的使用吗? - André Caron
@Andre - Web服务通常是语言无关的(除非它们使用特定于平台的二进制序列化),但您也可以使用它们来创建一个语言无关的API。 - Justin Niessner

4
一个Web服务可以被看作是一种API。但目前,您应该忘记这一点,只需专注于学习API的实际含义:与软件交互的方法的精确定义。有时,这涉及通过网络发送数据,但通常我们谈论的是可以从程序中调用的函数。
例如,在Ruby中有一个名为FileUtils.rm的函数。这就是API;当您从Ruby脚本中调用该函数时,它始终看起来相同。然后有API的实现;那就是实际删除文件的代码——在Ruby的每个实现中它可能看起来完全不同,但您(通常)不需要关心这一点,因为您只处理Ruby API。

3

可以通过互联网访问Web服务,使用HTTP和SOAP协议,即使没有类或知道其工作原理也可以获取信息。

API是一种库(一组类),您可以使用其中可用的函数在应用程序中执行某些操作。


2

2

通过网络公开的API称为Web服务。


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