首页 > 什么是接口(API)?

什么是接口(API)?

一直没明白,是什么意思,查过百度也查过GG,但是感觉还是不明白,有没有通俗一点方式解释一下?
我自己的理解是这样,别人提供一个方法给你,你调用这个方法返回给你一个东西,这叫接口么?那么前端方面所说的接口是什么?有些不懂了,求指导。


接口是一个抽象概念,一般有好几种层面的接口。Interface可翻译为界面也可翻译为接口,翻译为接口的由来应该是从电器的插口而来(未做考证)。通俗说法:接口就是用来连接而开放的入口。

大致有这些类型的接口:硬件接口、用户界面(UI)、软件接口、面向对象接口。

编程接口(API)应该是软件接口中的一个分支。当然接口在不同的领域有N多的分类。

至于API一般仅仅限于应用程序的编程接口。通俗的解释应该是:一个组件(或程序库)提供给开发者进行编程使用的,通过代码可以与之沟通的入口。比如说你下载了一个控件包,通过阅读说明你知道应该如何创建上下文、初始化、设置属性、调用、回调、事件处理,这些就是这个控件包的API。

API一般对应函数,在面向对象领域可能对应类提供的特性,而对于传输协议一般指协议的一种实现所提供的使用该协议的方式。


参考维基百科中的解释 http://zh.wikipedia.org/wiki/API

应用程序接口(英语:Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。由于近年来软件的规模日益庞大,常常会需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,进而提高系统的维护性和扩展性。


返回值 方法名(参数1, 参数2 ...) 这就可以认为是接口


你的问题让人糊涂啊,接口与API不一定等价。

1.接口。js原生是没有接口这一个概念的,不过可以轻易的模拟出来(《javascript设计模式》里面就介绍了这种方法)。而模拟出来的接口,自然就与别的OOP语言的接口类似。以Java为例,接口其实就是一种约定,凡是继承了这种接口的类均具有该接口所规定的方法,所以程序员必须实现这些方法。同时,对于编译器而言,因为Java是单继承的,所以用接口继承就可以让多态更加灵活。

2.API。js里面的API就是指宿主提供的API,如浏览器或NodeJs提供的API。而API可以类比为“请神上身”,当你使用了某一个API,你就是请了某个神跟你附体,你就可以使用它的技能。如用了document.getElementById那么你就有了相应的能力。否则你自己是没这个能力的。


接口:故名思议就是提供转接的口子。

你可以理解为遵循同一个规则的多个程序之间交换数据的一种方式。

往大了说,有网络接口。例如以 HTTP GET 方式请求 http://sf.gg 并获取返回值, http://sf.gg 就可以视为一个接口。MySQL client 使用 ip port user password 访问某个ip 端口上的 MySQL Server ,这个 Server 也可以视为接口。当然,javascript 通过 XMLHttpRequest 请求 http server 也可以视为一个接口通信。

往小了说,有程序内部接口。在某个类里面调用其他类提供的方法,也可以算是接口。


通俗点总结:接口就是在不干预程序内部源码的情况下,直接使用封装好的代码所提供的各种功能(平时我们调用类库,创建类库对象并调用其方法/属性,其实就是在使用接口;类库就是提供的一整套接口,类库提供的各个方法/函数......等类成员......就是各个接口。)


举两个例子:
1. 新浪微博是一个网站,所有的数据都是在新浪微博上的。新浪微博提供一整套的接口,调用接口我们可以获取到里面的数据。(相当于你的理解)
2. Windows是一个封装好的系统,按道理用户是没有权在Windows里头干任何事的,但是Windows提供了一整套的接口,调用接口我们可以操作Windows做出一些行为。

所以我个人的理解是利用接口,我们可以对一个封装好的整体进行操作,不仅仅是获取数据(前端说的可能偏向这个方面吧,从整体获取或者向整体提交数据),还可以对整体进行操作。平常写的类也可以算是提供了接口,类是整体,类的成员函数就是接口。


- 你可以搜下面向接口编程,要是还是不懂的化,没必要太纠结了,是一个抽象的问题。

【热门文章】
【热门文章】