幾個(gè)測試接口的好工具,效率加倍~
作為一名后端程序員,一定要對自己寫的接口負(fù)責(zé),保證接口的正確和穩(wěn)定性。因此,接口測試也是后端開發(fā)中的關(guān)鍵環(huán)節(jié)。
但我相信,很多朋友是懶得測試接口的,覺得這很麻煩。一般自己寫的接口自己都不調(diào)用,而是直接甩給前端或者其他調(diào)用方去驗(yàn)證,出了問題再改。雖然自己爽了,但在別人眼里,可能已經(jīng)對你 “懷恨在心”,不是不報(bào),時(shí)候未到而已。
其實(shí)測試接口并不難,這篇文章就給大家分享一些常用的接口測試工具,其中有些工具不僅能幫助你高效測試接口,甚至還能自動(dòng)生成接口代碼和接口文檔!
常用接口測試工具
這里給大家推薦 4 種常用的接口測試工具,至于到底用哪個(gè),全憑大家的喜好,自己用著舒服就好。
1、cURL
cURL 是一個(gè)功能強(qiáng)大的命令行工具,它可以用命令的形式來發(fā)送各種類型的 HTTP 請求。雖然它沒有圖形界面,但是卻非常靈活,深受開發(fā)者們的喜愛。
指路:https://curl.se/
cURL 的用法也很簡單,比如測試 GET 請求類型的接口,只需輸入下列命令:
curl?<要測試的接口地址>
測試 POST 類型的接口,命令如下:
curl?-d?'{"name":"yupi"}'
??-H?"Content-Type:?application/json"
??<要測試的接口地址>
其中使用 -d
選項(xiàng)表示要發(fā)送的數(shù)據(jù),-H
選項(xiàng)設(shè)置請求頭,指定發(fā)送 JSON 數(shù)據(jù)。
以上只是 cURL 的基礎(chǔ)用法,它還支持很多高級的參數(shù),不過沒必要去記憶。一般我們在調(diào)用別人接口時(shí),可以先在 F12 開發(fā)者工具中找到某個(gè)請求,然后點(diǎn)擊 以 cURL 格式復(fù)制
就能得到可直接使用的 curl 命令了。

強(qiáng)烈建議大家學(xué)會使用 cURL,尤其是 Linux 開發(fā)者們,在沒有圖形界面的場景下這個(gè)工具可太實(shí)用了。
2、Apifox
要是幾年前,我可能還會建議大家去用 Postman 這種圖形界面測試軟件,但現(xiàn)在時(shí)代變了,越來越多國產(chǎn)的接口測試工具能力已經(jīng)遠(yuǎn)超了 Postman。
比如我在用的 Apifox,它是一個(gè)非常強(qiáng)大的 API 設(shè)計(jì) + 開發(fā) + 測試一體
的協(xié)作工具。
指路:http://apifox.com/b2liyupi
首先是支持 20 多種格式的接口數(shù)據(jù)導(dǎo)入,快速可視化接口信息:

然后可以一鍵調(diào)試接口,哪怕你本地的后端服務(wù)器沒有啟動(dòng),也可以通過 Mock 功能快速生成模擬數(shù)據(jù)!

Apifox 還有個(gè)很強(qiáng)大的能力,支持基于接口信息去生成 130 多種語言及框架的代碼!也就是說,你可以先和前端約定并編寫好接口文檔,然后直接生成代碼就能給前端調(diào)試了。

更多的功能就先不介紹了,感興趣的同學(xué)自己探索。
3、IDEA 的 HTTP Client
IntelliJ IDEA 開發(fā)工具內(nèi)置了一個(gè) HTTP Client 工具,它允許開發(fā)者在 IDE 中直接創(chuàng)建、管理和發(fā)送 HTTP 請求,并查看響應(yīng)結(jié)果。
用法很簡單,首先進(jìn)入 IDE 的 Tools => HTTP Client,點(diǎn)擊創(chuàng)建一個(gè)請求:
支持將 cURL 轉(zhuǎn)換為 HTTP 請求,可見 cURL 的地位

然后進(jìn)入請求編輯界面,剛開始不熟悉請求編寫語法的話,可以點(diǎn)擊右上角導(dǎo)入示例的請求信息:

比如導(dǎo)入一個(gè) GET 請求示例:

然后點(diǎn)擊綠色的箭頭就能發(fā)送接口測試請求了,能夠看到詳細(xì)的響應(yīng)信息:

不過我個(gè)人不喜歡這種方式來測試接口,寫代碼已經(jīng)很累了,結(jié)果測試接口還讓我寫代碼???
4、Swagger 和 Knife4j
Swagger
Swagger 是一個(gè)知名的 API 開源項(xiàng)目。此前,很多同學(xué)對 Swagger 的認(rèn)識可能僅停留在生成接口文檔,即下圖的 Swagger UI
,可以在線查看和調(diào)試接口信息。
指路:https://swagger.io/tools/swagger-ui/

但實(shí)際上,Swagger UI 只是 Swagger 的其中一個(gè)功能,Swagger 還包含了 Swagger Editor 接口編輯器、Swagger Codegen 代碼生成器等強(qiáng)大工具。

嚴(yán)格來說,Swagger 是 一套 完整的 API 開發(fā)工具,讓我們在統(tǒng)一的界面中完成 API 設(shè)計(jì)、接口開發(fā)、接口測試、文檔生成等功能,極大地提高了開發(fā)效率。
一般來說,只需要在項(xiàng)目中引入 Swagger 依賴,并且通過注解的方式來描述 API 的信息,就可以使用它進(jìn)行接口測試和文檔生成了。
但其實(shí),我個(gè)人已經(jīng)很久沒有直接使用 Swagger 了,而是會選用它的增強(qiáng)版 Knife4j
來生成接口文檔。要說原因的話,就是 Swagger 的默認(rèn)界面有點(diǎn)小丑,API 多了管理起來就會很麻煩。
感受一下:

Knife4j
Knife4j 是一個(gè)基于 Swagger 的增強(qiáng)工具,它提供了更美觀的界面和更多功能,讓接口測試和文檔生成更加高效。
指路:https://doc.xiaominfo.com/
Knife4j 的用法很簡單,按照官方文檔的指引,首先根據(jù)自己項(xiàng)目的 Spring Boot 版本引入對應(yīng)的依賴,比如 Spring Boot 2.x 推薦使用以下 Maven 配置:
<dependency>
????<groupId>com.github.xiaoymin</groupId>
????<artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
????<version>4.3.0</version>
</dependency>
然后在 Spring Boot 的配置文件 application.yml
中添加 Knife4j 相關(guān)配置,比如:
knife4j:
??enable:?true
??openapi:
????title:?Knife4j?文檔
最后,訪問 Knife4j 的文檔地址(一般是項(xiàng)目地址 + /doc.html
),即可查看自動(dòng)根據(jù) Controller 接口代碼而生成的接口文檔。
示例文檔如下:

選中某個(gè)接口,就可以在線調(diào)試了:

當(dāng)然,因?yàn)?Knife4j 的底層也是依賴 Swagger 的,所以你還可以使用 Swagger 注解來自定義接口的信息。
比如下列代碼,就使用了 Swagger 的 @Api 和 @ApiOperation 注解給接口添加名稱和描述信息:
("/api/posts")
(tags?=?"帖子管理")
public?class?PostController?{
????
???? (value?=?"創(chuàng)建帖子",?notes?=?"用于創(chuàng)建新的帖子")
????public?ResponseEntity<String>?createPost(@RequestBody?PostRequest?postRequest)?{
????????//?在這里實(shí)現(xiàn)創(chuàng)建帖子的邏輯
????????return?ResponseEntity.ok("帖子創(chuàng)建成功");
????}
}
這樣能讓生成的接口文檔更通俗易懂,而不是大把的英文。
總結(jié)一下,我個(gè)人最推薦的接口調(diào)試方式是 cURL、Apifox 和 Knife4j 的組合:
無界面(Linux)環(huán)境用 cURL
桌面端管理接口、Mock 數(shù)據(jù)用 Apifox
項(xiàng)目中引入 Knife4j,實(shí)現(xiàn)快速的接口文檔生成和 web 共享
實(shí)踐
編程導(dǎo)航星球的所有后端項(xiàng)目都使用了 Swagger + Knife4j 實(shí)現(xiàn)接口調(diào)試和接口文檔生成。
???? 編程導(dǎo)航原創(chuàng)項(xiàng)目教程系列:https://yuyuanweb.feishu.cn/wiki/SePYwTc9tipQiCktw7Uc7kujnCd