IntelliJ IDEA的這個接口調試工具真是太好用了


IntelliJ IDEA的這個接口調試工具真是太好用了


- 你有一個思想,我有一個思想,我們交換後,一個人就有兩個思想

- If you can NOT explain it simply, you do NOT understand it well enough

現陸續將Demo代碼和技術文章整理在一起 https://github.com/FraserYu/learnings,方便大家閱讀查看,覺得不錯,還請Star


IntelliJ IDEA的這個接口調試工具真是太好用了


抗擊疫情,在家辦公。工作照常幹,領導需要幾個新功能接口開發。以前在公司辦公,通常開發完的功能沒什麼問題,暴露出 Swagger 接口文檔,直接找旁邊的前端大人聯調測試了


當下,君在長江頭,我在長江尾,夜夜思君不敢出門見君啊,一切測試全交給自己吧,


IntelliJ IDEA的這個接口調試工具真是太好用了

雖然想念前端,但是在家辦公也絕對是和在公司辦公一樣一樣的,高效不(qu)摸魚

插播背景

在多個產品線上來回穿切換著開發功能,以前用Postman的場景是這樣的:

IntelliJ IDEA的這個接口調試工具真是太好用了

實際遠遠不止這幾個文件夾來歸類多個產品線的接口,Postman的功能非常強大,但是面對以下這些狀況時,我覺得調試一個接口太麻煩了 (這裡不討論工具的好壞,工具是幫助我們提高效率的,每個人的需求也不一樣,我只說明我個人遇到的一些情況,不喜請勿噴)

  • 查找配置多數要通過鼠標點來點去, 與習慣文本和快捷鍵操作的便捷方式違背
  • 調試別人接口要導入他們的一些數據,比較麻煩
  • 多個產品線環境變量查看不直觀
  • 寫完接口要來回切換應用進行測試,比如(IDEA Postman)
  • 快速定位接口比較麻煩
  • ......

無意間發現 IntelliJ IDEA 的 HTTP Client 工具剛好能解決我上面提到的一些問題,簡單的說就是能直接在 IDEA 的代碼編輯器中 創建,編輯,執行 HTTP請求,就像這樣(如果你心動了,請繼續向下看吧):

IntelliJ IDEA的這個接口調試工具真是太好用了


於是,去官網查看一番作出如下整理:


走進 Http Client

HTTP Client 是 IDEA 默認綁定好並啟用的插件,如果你那裡沒有啟用,按照下圖啟用就好

IntelliJ IDEA的這個接口調試工具真是太好用了


點擊菜單:Tools — HTTP Client — Test RESTful Web Service


IntelliJ IDEA的這個接口調試工具真是太好用了


接下來進入下面的界面:


IntelliJ IDEA的這個接口調試工具真是太好用了


上圖已給出提示,REST Client 是被棄用的,點擊右側的 Convert request to new format , 進到下面界面:

IntelliJ IDEA的這個接口調試工具真是太好用了


默認會創建一個名為 rest-api.http 的文件,該文件被存儲在 Scratches 文件夾下,為了突出主角光環,關於 https://www.jetbrains.com/help/idea/scratches.html 請官網自行查看 (繼續向下看不影響理解的

),黃色框線的功能也非常有用,繼續向下看


創建 HTTP request 文件


剛剛提到的 rest-api.http 就是 HTTP request 文件,可以通過兩種方式創建:

  1. 通過快捷鍵 ⇧⌘N 然後選擇 HTTP Request. (文件存放在Scratches 文件夾)
  2. 通過菜單操作 File—New—HTTP Request (文件存放在我們指定的目錄下,就和我們平時創建class/package是一樣一樣滴)

如果在項目中使用,這裡推薦使用第二種方式,因為它可以作為項目文件,通過 Git 提交到倉庫,大家共享文件,共同維護接口請求數據,自然就不會出現調試別人接口還要導入他人數據的情況啦


編輯 HTTP request 文件

  1. 用戶登錄,成功後獲取 Token,通常是 POST 請求
  2. 用戶後續訪問行為都要在請求頭中攜帶登錄成功返回的 Token

通過點擊 Add Request,選擇相應的方法就可以編寫啦

IntelliJ IDEA的這個接口調試工具真是太好用了


都知道,通常寫一個完整的請求需要寫好多內容,貼心的 IDEA 給我們提供了模版,我們只需要在 Examples 中找模版就可以啦,比如找 POST 請求的模版,選取合適的拷貝過去就可以,so easy~~~

IntelliJ IDEA的這個接口調試工具真是太好用了


到這裡,就可以發送基本的請求了,但是,一個項目中接口眾多,如何快速生成參數?如何快速切換端口?如何讓登錄之後的每個請求自動攜帶成功返回的 Token?我們需要更高級的玩法


HTTP Client 進階玩法


使用環境變量

在編寫HTTP請求時,可以使用變量對其元素進行參數化。變量可以保存請求的host、port和path、查詢參數或值、請求頭值或請求體值等.


使用變量的方式非常簡單,就用兩個大括號包圍定義好的變量就可以了,就像這樣:

IntelliJ IDEA的這個接口調試工具真是太好用了


當然我們也要有地方定義變量


定義環境變量

環境變量需要定義在環境文件中,環境文件有兩種:

  1. 創建名為 rest-client.env.json 或者 http-client.env.json 的環境文件(其實裡面就是保存 JSON 數據),該文件裡可以定義用在整個項目上的所有常規變量
  2. 創建名為rest-client.private.env.json 或者 http-client.private.env.json, 看文件名你應該也猜到這是保存敏感數據的,比如密碼,token等,該文件默認是被加入到 VCS 的 ignore文件中的,同時優先級高於其他環境文件, 也就是說,該文件的變量會覆蓋其他環境文件中的變量值

裡面的文件內容就像這樣

<code>{
"dev": {
"host": "localhost",
"port": 8081,
"identifier": "tanrgyb",
"password": "iloveu"
},
"prod": {
"host": "dayarch.top",
"port": 8080,
"identifier": "admin",

"password": "admin"
}
}/<code>


運行一下我們編寫的請求吧:

IntelliJ IDEA的這個接口調試工具真是太好用了


IDEA自動識別多個環境,這樣就可以輕而易舉的切換環境,使用不同的變量值了(這皮鞋,你說亮不亮,還有更亮的)


巧用 response handler 腳本

上面提到,我們要讓登錄成功後的所有請求都自動攜帶成功返回的 Token,這樣不用我們每次都手動將其添加到header中,同樣有兩種方式將腳本插入到請求中

  • 內嵌方式
<code>GET host/api/test

> {%
response 腳本
%}/<code>


  • 外部文件方式(就是將內嵌的腳本抽離出到文件中)
<code>GET host/api/test

>>


以登錄返回獲取的token設置到變量中為例,看代碼:

<code>POST http://{{host}}:{{port}}/login
Content-Type: application/json
Accept: application/json

> {%
client.global.set("auth_token", response.body.result.token);

%}/<code>


注意

response.body.result.token 是我按照我登錄返回的數據結構寫的,不同結構不一樣,你也可以是這樣的 response.body.token , response.body 之後根據你的數據結構發揮吧

我還是不放心,把我的登錄返回結構(項目中怎樣設計這種結構,可以參考之前寫的https://dayarch.top/p/spring-boot-global-return.html )粘貼在此處吧,這回理解了吧?

IntelliJ IDEA的這個接口調試工具真是太好用了


接下來我們就可以愉快的在其他請求上攜帶這個 Token 了

IntelliJ IDEA的這個接口調試工具真是太好用了


注意

這裡的Authorization 類型,大家根據自己的實際情況做修改,比如:Authorization: Bearer {{auth_token}}

以上這些已經滿足我的日常使用,沒有進一步瞭解更多,更多關於 Response 腳本的用法請大家查看官網 https://www.jetbrains.com/help/idea/http-response-reference.html吧


你以為到這裡結束了(OMG),還有香料需要和大家分享,搭配上面功能使用更棒哦


輔助功能說明


RestfulToolkit

RestfulToolkit 同樣是個插件,在插件市場搜索安裝即可

IntelliJ IDEA的這個接口調試工具真是太好用了


安裝了這個插件後,打開側邊欄,項目的所有接口信息都會展現在此處:

IntelliJ IDEA的這個接口調試工具真是太好用了


我常用的功能就是把指定接口生成的JSON數據拷貝到 HTTP request 文件中,免去手寫的麻煩了,你說方便不?


除此之外,使用快捷鍵 `cmd+`, 可以根據關鍵字快速找到接口,回車迅速到達代碼接口位置,這也是帶來了極大的便利

IntelliJ IDEA的這個接口調試工具真是太好用了


Live Template

項目中請求內容各有不同,IDEA標準提供的GET POST 請求案例可能還不能滿足我們的需求,這時我們就可以利用 Live Template 定製自己的模版,迅速生成request 內容,像這樣:

IntelliJ IDEA的這個接口調試工具真是太好用了


JSON Viewer

JSON Viewer是一款 Chrome瀏覽器插件,在瀏覽器 Omini-box 中輸入 json-viewer + Tab, 粘貼json在此處,就可以對json數據進行格式化了

IntelliJ IDEA的這個接口調試工具真是太好用了


打開開發者工具,在Network下雙擊某個HTTP請求,會自動在 new tab下格式化返回的json數據,免去了粘貼數據然後格式化的煩惱


關於自測接口的乾貨我抖的差不多了,抖抖更健康


總結

再次重申,不做工具黨,也沒有任何批判之意,工具只是為了讓我們更高效的工作,選擇適合自己的。從上面的介紹中來看,IDEA HTTP client 搭配我說的幾個輔助功能很好的解決了文章開頭說明的幾個問題,對我個人情況來說,足矣!!


  • 如果你認為本文對你有幫助,還請「在看/轉發/贊」(這就是送我的大火箭,大跑車,大灰機✈️)
  • 如果你還發現了更好的功能還請補充在留言區,我回頭繼續補充這塊內容,萬分感謝

靈魂追問


  1. Kibana的Dev Tools用來調試ES接口和這個界面很相似,可以延伸瞭解一下相關知識
  2. 你在項目中如何高效測試接口與聯調的呢?還請大方賜教
  3. 在家辦公和公司辦公對你有什麼影響?

參考


  • https://www.jetbrains.com/help/idea/testing-restful-web-services.html

趣味原創解析Java技術棧問題,將複雜問題簡單化,將抽象問題圖形化落地

如果對我的專題內容感興趣,或搶先看更多內容,歡迎訪問我的博客 https://dayarch.top


分享到:


相關文章: