接口測(cè)試中的接口到底是什么?
先看一道題,請(qǐng)找出以下可以被成為接口的選項(xiàng):
◆ USB
◆ 水龍頭
◆ 用戶界面UI
◆ 函數(shù)
◆ https://www.baidu.com
◆ https://api.github.com
接口的英文是interface。interface的中文譯名為 “界面” 或 “接口”。
當(dāng)接口是interface的譯名時(shí),接口是用于溝通的中介物的抽象化概念。
不同的事物之間很難有辦法進(jìn)行溝通交流,所以才有牛頭不對(duì)馬嘴的說(shuō)法。電腦要想獲取手機(jī)里面的數(shù)據(jù),最簡(jiǎn)單的辦法就是使用一個(gè)適配器把二者匹配起來(lái),這個(gè)東西就是USB接口。
電腦要想通電,和電力系統(tǒng)進(jìn)行交流,也需要用到接口,也就是電源適配器。水龍頭的作用也類似。

這類接口被稱為硬件接口。硬件接口(hardware interface)指的是兩個(gè)硬件設(shè)備之間的連接方式。硬件接口既包括物理上的接口,還包括邏輯上的數(shù)據(jù)傳送協(xié)議。像USB接口,3.5mm耳機(jī)接口都屬于接口。
有了接口,我們就可以對(duì)不同的物體進(jìn)行適配,讓他們之間進(jìn)行數(shù)據(jù)交互,達(dá)到溝通的目的。但是他們相互之間并不知道對(duì)方內(nèi)部發(fā)生了什么事情,他們?cè)诤醯氖菍?duì)方到底有沒(méi)有給我相應(yīng)的數(shù)據(jù)和回饋。耳機(jī)里面播放出音樂(lè),耳機(jī)是不會(huì)管電腦和手機(jī)是如何把一個(gè)mp3文件轉(zhuǎn)化成聲音的,更不會(huì)管cpu里有多少個(gè)晶體管在工作。不會(huì)管他們用的是Intel芯片還是海思芯片。

同樣的,當(dāng)我們?nèi)ャy行取錢(qián)的時(shí)候,我們只需要提交申請(qǐng)單給銀行柜員。然后銀行柜員會(huì)給我們很多錢(qián),至于工作人員在柜臺(tái)后面執(zhí)行了什么操作,我們是不知道到的。


接口除了硬件接口,還有軟件接口。
這也是我們?nèi)粘V饕斫獾慕涌谛问健\浖涌谑巧婕暗杰浖绦蚝推渌到y(tǒng)進(jìn)行交互溝通的時(shí)候的接口。
它可以分為兩類:
◆ 用戶和程序之間的中介
◆ 程序與程序之間的中介
用戶和程序之間的中介被稱為用戶界面或者用戶接口,也就是UI(User Interface)。所以UI也是一種接口。程序與程序之間的中介被稱為應(yīng)用程序編程接口,英文名是API(Application Programming Interface)。
API(應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù)。目的是提供應(yīng)用程序與開(kāi)發(fā)人員基于某軟件或硬件得以訪問(wèn)一組例程的能力,而又無(wú)需訪問(wèn)源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。
通過(guò)定義可以知道,API 還是繼承了接口定義的特性,提供的還是和其他系統(tǒng)進(jìn)行溝通的能力,而不需要其他系統(tǒng)如何實(shí)現(xiàn)的。用來(lái)描述API的功能和具體設(shè)置的說(shuō)明被成為API文檔,也叫接口文檔。
接口文檔通常包含以下部分:
◆ 接口名稱和作用
◆ 接口請(qǐng)求參數(shù)
◆ 接口返回?cái)?shù)據(jù)
◆ 接口異常數(shù)據(jù)

如果你會(huì)一門(mén)編程語(yǔ)言,比如說(shuō)Python。你總是會(huì)有機(jī)會(huì)接觸到第三方庫(kù)的API文檔,像我們經(jīng)常使用的requests庫(kù)的 API 文檔就在這里。
文檔中關(guān)于 get 這個(gè)接口的文檔描述是這樣的:

接口名稱:get
接口作用:Sends a GET request
接口參數(shù):url, params, **kwargs
接口返回?cái)?shù)據(jù):requests.Response
通過(guò)上面的例子我們知道一個(gè)接口對(duì)應(yīng)的其實(shí)是一個(gè)函數(shù)。
接口get指的就是request.get(url, params=None, **kwargs)這個(gè)函數(shù)。當(dāng)然他也可以通過(guò)類的形式存在。函數(shù)f()就像機(jī)器或黑箱,給予輸入值x便產(chǎn)生唯一輸出值f(x) 。這和接口的解釋異曲同工。
他們都只關(guān)心相互傳遞的數(shù)據(jù),而不關(guān)心對(duì)方內(nèi)部的實(shí)現(xiàn)過(guò)程。

當(dāng)你寫(xiě)了一個(gè)庫(kù),里面有很多函數(shù),如果別人要使用你這個(gè)庫(kù),但是看不懂每個(gè)函數(shù)內(nèi)部是怎么實(shí)現(xiàn)的。這個(gè)時(shí)候他就會(huì)去看你關(guān)于這個(gè)函數(shù)的說(shuō)明。這個(gè)函數(shù)的作用是什么,需要傳遞哪些參數(shù),會(huì)返回什么數(shù)據(jù)。對(duì)于使用這些函數(shù)的用戶來(lái)說(shuō) ,你的這些函數(shù)就是API。
在工作中有一個(gè)非常有意思的現(xiàn)象,我們會(huì)把某個(gè)URL稱為接口。
這是為什么呢?
在進(jìn)行HTTP請(qǐng)求的時(shí)候通常來(lái)說(shuō)URL地址會(huì)和接口進(jìn)行綁定。當(dāng)訪問(wèn)一個(gè)URL地址時(shí),服務(wù)器會(huì)執(zhí)行對(duì)應(yīng)的接口,也就是函數(shù)。如果后端工程師提供一個(gè)函數(shù)給我,說(shuō)這是你要的登錄接口,我肯定會(huì)很困惑,因?yàn)槲也恢篮瘮?shù)是什么。
但如果他給我一個(gè)URL地址,我就會(huì)非常開(kāi)心。

因?yàn)楹瘮?shù)對(duì)于非專業(yè)人員不友好,所以我們通常就用 URL 來(lái)代替函數(shù)來(lái)稱呼接口。當(dāng)我們討論某個(gè)接口的時(shí)候,指的是URL后面綁定的函數(shù)。
本文由檸檬班班雨澤老師原創(chuàng)!歡迎大家在評(píng)論區(qū)留言,發(fā)表你的想法吧!