API与Web服务[关闭]


204

Web服务和API有什么区别?区别是否超过用于传输数据的协议?谢谢。


3
API是指通过HTTP访问的API?还是只是普通的普通API?
巴勃罗·圣克鲁斯



你一定是在跟我开玩笑。122次投票,并且由于混合级别而使该问题中断。
约书亚

你了解我,我不确定为什么这个问题已经结束
芯片

Answers:


172

API(应用程序编程接口)是第三方用来编写与其他代码接口的代码的方法。Web服务是一种API,几乎总是通过HTTP运行(尽管像SOAP这样的某些服务可以使用诸如SMTP的替代传输)。该官方W3C定义中提到,Web服务不一定使用HTTP,但是这是几乎总是如此,通常认为,除非另有提及。

有关特定于Web服务的示例,请参见SOAPRESTXML-RPC。有关另一种API的示例(使用C语言编写,供在本地计算机上使用),请参见Linux Kernel API

就协议而言,Web服务API几乎总是使用HTTP(因此是Web部分),并且肯定涉及网络通信。API通常可以使用他们希望的任何通信方式。例如,Linux内核API使用中断来调用构成其API的系统调用,以用于来自用户空间的调用。


8
您是否会将每个Web服务都视为API?当使用AJAX重新加载网页区域而不是重新加载整个页面时怎么样?即使涉及Web服务,我也不一定将其视为API。否则,我们可以证明,对于曾经创建的每一个功能,无论是在DLL还是JAR,Web服务或纯代码中,都是API。要使API成为API,必须牢记第三方开发人员,并且该API应该与最终产品(使用该API的应用程序)完全无关。
罗纳德

18
是的,每个Web服务都是一个API。是的,AJAX Web服务是一个API,只是没有文档记录,因此并不是真正供公众使用。并非每个API都是为第三方使用而设计的API。您也可以使用内部API。
Ryan Shillington 2014年

54

基本上,Web服务是一种在两台机器之间进行通信的方法,而API是一种暴露层,允许您针对某些内容进行编程。

您可能会拥有一个API,并且与该API进行交互的主要方法是通过网络服务。

技术定义(由Wikipedia提供)是:

API

应用程序编程接口(API)是由库和/或操作系统服务提供的一组例程,数据结构,对象类和/或协议,以支持应用程序的构建。

网络服务

W3C将Web服务(也称为Web Service)定义为“旨在支持可互操作的机器对机器交互的软件系统”


4
我对有人反对我的回答表示满意,但我很想知道为什么。
Mark Biek 09年

41
您的回答暗示着API和Web服务是截然不同的,而实际上Web服务是一种API。由于此问题的症结在于两者之间的区别是什么,因此对于响应者来说,弄清Web服务是一种API是很重要的。
Andrew Cholakian

3
有趣。我将不得不(分别是:))不同意。但我非常感谢您的反馈。
Mark Biek 09年

43

从广义上讲,Web服务基于HTTP的API。他们通常使用JSON或XML,但是还有其他一些方法。


20
那么所有的Web服务都是API,但不是所有的API都是Web服务吗?
筹码

13
是的,API可以是DLL,JAR或OCX等库。它们也可以是源代码发行版,例如Facebook的PHP API ...
cgp

10

API是已发布的接口,用于定义组件A与组件B的通信方式。

例如,Doubleclick具有已发布的Java API,该API使用户可以查询数据库表以获取有关其在线广告活动的信息。

例如,调用GetNumberClicks(用户名)

要实现API,您必须将Doubleclick .jar文件添加到您的类路径中。该呼叫是本地电话。

Web服务是一种API形式,其中接口是通过WSDL定义的。这允许通过HTTP远程调用接口。

如果Doubleclick将其接口实现为Web服务,则他们将使用Tomcat中运行的Axis2之类的东西。

远程用户将调用Web服务

例如,调用GetNumberClicksWebService(用户名)

并且GetNumberClicksWebService服务将在本地调用GetNumberClicks。


这个问题确实很老,但是我会注意到这个答案使API和接口感到困惑。API不仅仅是已发布的接口(其中包括SOAP之类的东西),它还是特定应用程序或服务的公共接口。用“ API是具有已发布接口的组件进行交互,第三方组件可以与它们交互”之类的说法来表达更为准确。
JDB仍然记得Monica

7

API(应用程序编程接口),完整的形式本身表明它是一个接口,该接口使您可以在一些其他应用程序接口的帮助或支持下为您的应用程序编程,该接口公开了一些对您的应用程序有用的功能。

例如,在您的网站上显示更新的货币汇率将需要一些第三方接口来进行编程,除非您计划拥有自己的数据库,其中包含货币汇率和定期的汇率更新。这套功能在其他人已经可以使用时,并且当他们想与其他人共享时,必须有一个端点才能与对这种交互感兴趣的其他人进行通信,以便他们通过网络将其部署在网络上。服务。终点不过是其应用程序的接口,您可以针对API进行编程。


4

API是基于代码的集成,而Web服务是基于消息的基于WSDL等具有合同的可互操作标准的集成。


我不确定您的答案会为现有答案添加任何内容。
andrewsi 2012年

3

将Web服务视为一个Web API。API现在是一个通用术语,因此Web服务是功能(通常与业务相关)的接口,您可以通过各种协议从网络上获得该功能。


1

检查此http://en.wikipedia.org/wiki/Web_service

正如链接所提到的,Web API是Web服务中最有可能与Web 2.0相关的开发,而基于SOAP的通信被基于REST的通信所替代。请注意,REST服务不需要XML,SOAP或WSDL服务API定义,因此与传统的Web服务有很大不同。


0

另一个示例:谷歌地图api与谷歌方向api网络服务,而前者将javascript文件提供(交付)到网站(后者可以用作api来提供新功能),后者是Rest网络服务来交付数据( (可以json或xml格式),但可以进行处理(但不能在api的意义上使用)。


1
嗯...可以将javascript作为数据返回,然后用作代码,这不是有效的对比
David C
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.