接口測試中的接口到底是什么?
先看一道題,請找出以下可以被成為接口的選項:
◆ 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后面綁定的函數。
本文由檸檬班班雨澤老師原創!歡迎大家在評論區留言,發表你的想法吧!






