都2024了,還在用 Postman 做 HTTP 接口測試嗎?
作為Java開發(fā)者,尤其是做業(yè)務(wù)開發(fā)的,免不了要寫一大堆接口,也就是我們所說的 Controller API。
身為一名合格的后端開發(fā)人員,我們不能直接把寫完的接口拋給前端用(ps:雖然有一些人就是這么干的,實話說,我也這么干過,但前提是跟前端關(guān)系比較好,要不然容易挨打)。而是先自己測試一下(俗稱自測),等測試通過了,再上測試環(huán)境,再給前端聯(lián)調(diào)。
從而節(jié)省來回返工和扯皮的時間,順便也能維護作為后端的尊嚴(yán),以及證明自己寫的代碼質(zhì)量沒問題。
那你平時做接口測試的時候用什么工具呢?我問了一圈發(fā)現(xiàn),很多人都用 Postman。Postman 確實是很好用,我也用,但是更多的是用來測試第三方服務(wù),比如要集成一個外部HTTP SDK,一般會在 Postman 中單獨創(chuàng)建一個集合來用。
但是如果是平時做寫 Java 接口的話,再從 IDEA 中跳出來到 Postman 中創(chuàng)建一個 Request 就有點兒麻煩了。人懶,所以我選擇在 IDEA 中無縫完成,不來回切換窗口。
這就說到今天的主角了,IDEA 中的一個 HTTP 請求插件 - HTTP Client
使用 HTTP Client 插件,可以直接在 IntelliJ IDEA 代碼編輯器中創(chuàng)建、編輯和執(zhí)行 HTTP 請求。
在插件市場搜索 HTTP Client 安裝即可,這還是 JetBrains 官方出品的。
圖片
安裝完成后,項目中Controller 中帶有 @RequestMapping、@GetMapping、@PostMapping注解的HTTP接口前都會多一個小圖標(biāo),IDEA 版本不一樣圖片的樣式也有些差別。但是功能都一樣,點擊小圖標(biāo),會轉(zhuǎn)到一個以 .http結(jié)尾的文件中,這就是 HTTP Client 的編輯器,可以在這里創(chuàng)建一個項目或者一個 Controller 的所有請求。
圖片
然后在 .http文件中,點擊任何一個接口前的綠色小按鈕,就可以執(zhí)行請求了。
圖片
所有的 .http文件統(tǒng)一在項目的Scratches and Consoles下的Scratches目錄下,可以根據(jù)功能模塊創(chuàng)建多個文件,來區(qū)分不同的功能,和 Postman中的集合是一個意思。
圖片
可以通過左上角小按鈕來添加不同類型的請求,比如 Get、不同參數(shù)形式的 Post ,還支持GRPC、WebSocket 這些。
圖片
這里要說一個小技巧,有時候我們做的一個 POST 接口請求參數(shù)過多,有些大表單甚至有幾十個參數(shù),這也是很多人不想測試的原因,構(gòu)造表單參數(shù)就很麻煩了。
可以裝一個實體轉(zhuǎn) JSON 的插件,直接一下將實體類轉(zhuǎn)為 JSON 。這不一個JSON參數(shù)就出來了,比如這個 POJO to JSON插件。
圖片
例如,進(jìn)入到一個參數(shù)實體中,點擊右鍵,然后選擇Copy Json,完整的 JSON 參數(shù)就有了,很方便。
圖片
如果不想裝插件的話,可以用 ChatGPT、Kimi ,將實體類給他們,讓他們轉(zhuǎn)一個 JSON 出來,只要你的參數(shù)名命名規(guī)范,出來的參數(shù)值都堪稱完美。
說回 HTTP Client,還可以創(chuàng)建不同的環(huán)境文件,來區(qū)分不同的環(huán)境,比如開發(fā)和測試環(huán)境。
圖片
我創(chuàng)建了一個環(huán)境文件,然后在里面定義了 dev 和 test 兩個環(huán)境,每個環(huán)境里的參數(shù)值是不一樣的。
圖片
然后在請求中選擇對應(yīng)的環(huán)境,就可以使用對應(yīng)的參數(shù)了。
圖片
HTPP Client 當(dāng)然也考慮到一直使用 Postman 的用戶了,安裝 Import from Postman Collections這個插件后,可以一鍵將 Postman 集合導(dǎo)進(jìn)來,然后在 IDEA 中快速的將 Postman 的請求轉(zhuǎn)為 HTTP Client 請求。
圖片
別的功能其實還有,比如支持指定 HTTP 協(xié)議的版本,在結(jié)尾加上 HTTP/2可以指定使用 HTTP/2 協(xié)議。
將 curl 命令粘貼進(jìn)去,自動轉(zhuǎn)為 HTTP Client 格式等等。