API基礎(chǔ)知識
一、什么是API
?????應(yīng)用程序接口(英語:Application Programming Interface),縮寫為API泥技,是一種計算接口,它定義多個軟件中介之間的交互,以及可以進(jìn)行的調(diào)用(call)或請求(request)的種類趴乡,如何進(jìn)行調(diào)用或發(fā)出請求,應(yīng)使用的數(shù)據(jù)格式蝗拿,應(yīng)遵循的慣例等晾捏。它還可以提供擴(kuò)展機(jī)制,以便用戶可以通過各種方式對現(xiàn)有功能進(jìn)行不同程度的擴(kuò)展哀托。一個API可以是完全定制的惦辛,針對某個組件的,也可以是基于行業(yè)標(biāo)準(zhǔn)設(shè)計的以確辈质郑互操作性胖齐。通過信息隱藏,API實(shí)現(xiàn)了模塊化編程嗽冒,從而允許用戶實(shí)現(xiàn)獨(dú)立地使用接口呀伙。
一個API中通常包含:
Method: 請求方法
URL:唯一資源定位符
Params:參數(shù)
Authorization:認(rèn)證方式
Headers:消息頭
Body:消息體
?????當(dāng)我們?yōu)樽约合到y(tǒng)設(shè)計API的時候,一般來說我們是需要為API建立防火墻辛慰,在保護(hù)您的資源免受濫用的同時允許合法請求通過区匠。
防火墻原則:
API 能確認(rèn)所有的操作都是合法的。
在發(fā)生錯誤的時候 API 會根據(jù)錯誤報告機(jī)制發(fā)出指示帅腌,減輕開發(fā)人員的負(fù)擔(dān)驰弄。
API中內(nèi)置授權(quán)和訪問控制,以確保只有授權(quán)人員才能訪問特定數(shù)據(jù)速客。
我們可以實(shí)施速率限制來控制服務(wù)器資源的使用戚篙,以確保用戶不會濫用服務(wù)。
二溺职、接口分類
?????我們使用API需要遵循API的協(xié)議岔擂,否則就會報錯或得不到想要的效果位喂。在 API 術(shù)語中,協(xié)議 是規(guī)定了各部分之間如何進(jìn)行交流的一系列規(guī)則的集合乱灵。各部分之間想要完成交互必須理解并且遵守同一個協(xié)議塑崖。
1、http api接口
?????走h(yuǎn)ttp協(xié)議痛倚,通過路徑來區(qū)分調(diào)用的方法规婆,請求報文都是key-value形式的,返回報文一般都是json串蝉稳,有g(shù)et和post等方法抒蚜,這也是最常用的兩種請求方式。
?????json是一種通用的數(shù)據(jù)類型耘戚,所有的語言都認(rèn)識它嗡髓。(json的本質(zhì)是字符串,他與其他語言無關(guān)收津,只是可以經(jīng)過稍稍加工可以轉(zhuǎn)換成其他語言的數(shù)據(jù)類型饿这,比如可以轉(zhuǎn)換成Python中的字典,key-value的形式撞秋,可以轉(zhuǎn)換成JavaScript中的原生對象蛹稍,可以轉(zhuǎn)換成java中的類對象等。
2部服、webservice接口
??????走soap協(xié)議,通過http傳輸拗慨,請求報文和返回報文都是xml格式的廓八,我們在測試的時候都用通過工具才能進(jìn)行調(diào)用,測試赵抢。
3剧蹂、數(shù)據(jù)庫訪問接口
??????數(shù)據(jù)庫訪問接口是走jdbc方式連接數(shù)據(jù),對數(shù)據(jù)庫進(jìn)行增刪改查操作烦却,需要使用工具進(jìn)行測試宠叼。
三、接口測試
1其爵、接口本質(zhì)
?????接口可以簡單的理解為不同的URL冒冬,工作原理是URL通過get或post請求向服務(wù)器發(fā)送一些東西,然后得到一些相應(yīng)的返回值摩渺,本質(zhì)是數(shù)據(jù)的傳輸與接收简烤。
2、什么是接口測試
?????接口測試主要用于外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個子系統(tǒng)之間的交互點(diǎn)摇幻。測試的重點(diǎn)是要檢查數(shù)據(jù)的交換横侦,傳遞和控制管理過程挥萌,以及系統(tǒng)間的相互邏輯依賴關(guān)系等。簡答說就是通過URL向服務(wù)器或其他模塊等枉侧,傳輸我們想傳輸?shù)臄?shù)據(jù)引瀑,然后看看他們返回的是不是我們預(yù)期想要的。
3榨馁、接口測試時主要有兩種方法:
工具模擬請求的發(fā)送與接收憨栽。工具有很多如:Postman、JMeter等辆影;
代碼模擬請求的發(fā)送與接收徒像。如:JAVA自帶的Webb、RestTemplete蛙讥、HttpClient或其他锯蛀;