先看一道题,请找出以下可以被成为接口的选项:
◆ USB
◆ 水龙头
◆ 用户界面UI
◆ 函数
◆ https://www.baidu.com
◆ https://api.github.com
接口的英文是interface。interface的中文译名为 “界面” 或 “接口”。
当接口是interface的译名时,接口是用于沟通的中介物的抽象化概念。
不同的事物之间很难有办法进行沟通交流,所以才有牛头不对马嘴的说法。电脑要想获取手机里面的数据,最简单的办法就是使用一个适配器把二者匹配起来,这个东西就是USB接口。
电脑要想通电,和电力系统进行交流,也需要用到接口,也就是电源适配器。水龙头的作用也类似。
这类接口被称为硬件接口。硬件接口(hardware interface)指的是两个硬件设备之间的连接方式。硬件接口既包括物理上的接口,还包括逻辑上的数据传送协议。像USB接口,3.5mm耳机接口都属于接口。
有了接口,我们就可以对不同的物体进行适配,让他们之间进行数据交互,达到沟通的目的。但是他们相互之间并不知道对方内部发生了什么事情,他们在乎的是对方到底有没有给我相应的数据和回馈。耳机里面播放出音乐,耳机是不会管电脑和手机是如何把一个mp3文件转化成声音的,更不会管cpu里有多少个晶体管在工作。不会管他们用的是Intel芯片还是海思芯片。
同样的,当我们去银行取钱的时候,我们只需要提交申请单给银行柜员。然后银行柜员会给我们很多钱,至于工作人员在柜台后面执行了什么操作,我们是不知道到的。
接口除了硬件接口,还有软件接口。
这也是我们日常主要理解的接口形式。软件接口是涉及到软件程序和其他系统进行交互沟通的时候的接口。
它可以分为两类:
◆ 用户和程序之间的中介
◆ 程序与程序之间的中介
用户和程序之间的中介被称为用户界面或者用户接口,也就是UI(User Interface)。所以UI也是一种接口。程序与程序之间的中介被称为应用程序编程接口,英文名是API(Application Programming Interface)。
API(应用程序编程接口)是一些预先定义的函数。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
通过定义可以知道,API 还是继承了接口定义的特性,提供的还是和其他系统进行沟通的能力,而不需要其他系统如何实现的。用来描述API的功能和具体设置的说明被成为API文档,也叫接口文档。
接口文档通常包含以下部分:
◆ 接口名称和作用
◆ 接口请求参数
◆ 接口返回数据
◆ 接口异常数据
如果你会一门编程语言,比如说Python。你总是会有机会接触到第三方库的API文档,像我们经常使用的requests库的 API 文档就在这里。
文档中关于 get 这个接口的文档描述是这样的:
接口名称:get
接口作用:Sends a GET request
接口参数:url, params, **kwargs
接口返回数据:requests.Response
通过上面的例子我们知道一个接口对应的其实是一个函数。
接口get指的就是request.get(url, params=None, **kwargs)这个函数。当然他也可以通过类的形式存在。函数f()就像机器或黑箱,给予输入值x便产生唯一输出值f(x) 。这和接口的解释异曲同工。
他们都只关心相互传递的数据,而不关心对方内部的实现过程。
当你写了一个库,里面有很多函数,如果别人要使用你这个库,但是看不懂每个函数内部是怎么实现的。这个时候他就会去看你关于这个函数的说明。这个函数的作用是什么,需要传递哪些参数,会返回什么数据。对于使用这些函数的用户来说 ,你的这些函数就是API。
在工作中有一个非常有意思的现象,我们会把某个URL称为接口。
这是为什么呢?
在进行HTTP请求的时候通常来说URL地址会和接口进行绑定。当访问一个URL地址时,服务器会执行对应的接口,也就是函数。如果后端工程师提供一个函数给我,说这是你要的登录接口,我肯定会很困惑,因为我不知道函数是什么。
但如果他给我一个URL地址,我就会非常开心。
因为函数对于非专业人员不友好,所以我们通常就用 URL 来代替函数来称呼接口。当我们讨论某个接口的时候,指的是URL后面绑定的函数。
本文由柠檬班班雨泽老师原创!欢迎大家在评论区留言,发表你的想法吧!