IDEA httpClient插件

最近疫情在家,偶然間看到了這個idea 自帶的httpClient,發(fā)現(xiàn)對我很有用,主要是能保留參數(shù),于是自己研究了一番。畢竟我只研究了對我有用的,還有很多沒涉及到的,有需要的朋友自行到官網(wǎng)查看官方文檔

一、是否已安裝好插件

在Tools 下是否能找到Http Client,能找到,表示Idea已經(jīng)默認安裝,直接使用即可


Idea已經(jīng)默認安裝

如果找不到,則到File->Settings->Plugins->Marketplace下搜索Http Client進行安裝 、重啟即可


image.png

二、具體使用

2.1、打開方式1(文件存放在Scratches 文件夾)

關(guān)于方框里面的這種方式呢,提示已經(jīng)被廢棄,不使用


image.png

點開右邊的藍色字體 Convert request to the new format,進入到如下界面


image.png

默認會創(chuàng)建一個名為 rest-api.http 的文件,該文件被存儲在 Scratches 文件夾下,就是最左邊的方框里面,最右邊的小方框,點開會看到默認的一些模板,打開即可!
默認模板分類

post-request.http模板

2.2、打開方式2(文件可以提交到git,推薦這種)

在項目中新建一個存放http文件的文件夾, 右鍵文件夾->File->New->HTTP Request (文件存放在我們指定的目錄下,通過 Git 提交到倉庫,大家共享文件,共同維護接口請求數(shù)據(jù),自然就不會出現(xiàn)調(diào)試別人接口還要導入他人數(shù)據(jù)的情況)


image.png

2.3、以項目實際為例

  • 調(diào)用登錄接口,獲取Token,
  • 通過登錄得到的Token來進行其他的接口請求(一個get,一個post)

2.3.1 登錄接口,獲取token

### Admin登錄接口
POST http://localhost:8081/admin/login
Content-Type: application/json

{
 "mobile": "13888888888",
 "password": "123456"
}
image.png

2.3.2根據(jù)Token,調(diào)用一個get請求的接口

###獲取租戶詳情
GET http://localhost:8081/admin/tenant/findById?id = 1231816358256214017
Authorization:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbkZyb21BcHBJZCI6IjExNDA4ODE5NzIxOTM5MTA3ODUiLCJ1c2VyTm8iOiIxMTQxMTY5MzI2NTYxMzI1MDU3IiwidGVuYW50SWQiOiIxMTQwOTE1OTI4Njc1MTE1MDEwIiwiZXhwIjoxNTgxOTA0MjkyfQ.EvJfL_f754jh7zcNhkWXjunxxgse73iE1TnKLILSbXs
Accept: application/json
image.png

2.3.3根據(jù)Token,調(diào)用一個post請求的接口

### 添加數(shù)據(jù)接口
POST http://localhost:8081/admin/tenant/add
Authorization:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbkZyb21BcHBJZCI6IjExNDA4ODE5NzIxOTM5MTA3ODUiLCJ1c2VyTm8iOiIxMTQxMTY5MzI2NTYxMzI1MDU3IiwidGVuYW50SWQiOiIxMTQwOTE1OTI4Njc1MTE1MDEwIiwiZXhwIjoxNTgxOTA0MjkyfQ.EvJfL_f754jh7zcNhkWXjunxxgse73iE1TnKLILSbXs
Content-Type: application/json

{
  "userName": "httpClient",
  "password": "123456",
  "userMobile": "18780108964",
  "name": "httpClient新增租戶",
  "tenantMobile": "18780108694",
  "logoAddress": "測試地址",
  "typeId": 1231767150362939393,
  "address": "demoData",
  "wxMpOpen": 1,
  "wxMpAppId": "demoData",
  "wxMpSecret": "demoData",
  "wxMpTmpId": "demoData"
}

image.png

2.4、上面的接口重構(gòu)

我們可以看到,2.3里面已經(jīng)基本可以發(fā)送請求了,但是一個項目中很多接口,如何快速生成參數(shù)?如何快速切換端口?如何讓登錄之后的每個請求自動攜帶Token?,所有這里進行一個重構(gòu),主要從以下兩個方面進行重構(gòu)

2.4.1環(huán)境變量

  • 環(huán)境變量的概念
    根據(jù)官方文檔知道,在項目內(nèi)部是可以創(chuàng)建以下兩個文件:
    ①rest-client.env.json(或http-client.env.json)是一個包含常規(guī)變量的普通文件。(該文件里可以定義用在整個項目上的所有常規(guī)變量)
    ②在rest-client.private.env.json(或http-client.private.env.json)是一個私有的文件,可能包括密碼、令牌、證書、其他敏感信息。默認情況下,此文件被添加到VCS的ignore文件列表中。在http-client.private.env.json文件中指定的變量的值將覆蓋環(huán)境文件中的值。因為它的優(yōu)先級最高


    官方文檔兩個文件的定義
  • 環(huán)境變量的定義
    rest-client.env.json
{
  "dev": {
    "host": "localhost",
    "port": 8081,
    "mobile": "",
    "password": "",
   "tenant_id":1231816358256214017
  },
  "prd": {
    "host": "test.com",
    "port": 8082,
    "mobile": "",
    "password": ""
  }
}

rest-client.private.env.json

{
  "dev": {
    "mobile": "132222222221",
    "password": "123456"
  },
  "prd": {
    "mobile": "135555443322",
    "password": "123456"
  }
}
  • 環(huán)境變量的具體使用
    我們在環(huán)境變量中定義了一個dev和一個prd,在運行接口的時候,直接選擇運行哪個環(huán)境即可


    image.png

選dev開發(fā)環(huán)境,運行結(jié)果如下

host port變量

url中參數(shù)id的值放在環(huán)境變量文件中的


參數(shù)變量

2.4.2 response handler 腳本

  • 腳本的方式
    ①直接引用(就地插入腳本,在腳本前面加上>并將其包含在{% %})
GET host/api/test

> {%
// Response Handler Script
...
%}

②外部文件方式(外部文件插入腳本,在腳本前添加>外部文件路徑)

    GET host/api/test

    > scripts/my-script.js
  • HTTP Response Handler 庫公開的兩個對象介紹(具體的使用方法請看官方鏈接)
    client對象存儲會話元數(shù)據(jù),可以在腳本內(nèi)部對其進行修改。該client直到關(guān)閉IntelliJ IDEA的狀態(tài)保存。保存client.global的每個變量 variable_name 都可以通過后續(xù)的HTTP請求訪問{{variable_name}}。
    response 包含有關(guān)已接收響應的信息:其內(nèi)容類型,狀態(tài),響應正文等。

  • 腳本的具體使用

將獲取到的token設置到全部變量中


image.png

代碼如下:

### Tenant登錄接口
POST http://{{host}}:{{port}}/tenant/login
Content-Type: application/json

{
  "mobile": "13666666666",
  "password": "123456"
}
> {% client.global.set("auth_token",response.body.result.token)
%}

使用剛才的全局變量值:注意系統(tǒng)給的模板是這樣子的Authorization: Bearer {{auth_token}},但是我沒成功,最后我去掉了Bearer和那個空格才OK


image.png

三、Live Template

可以看到在這里會提示使用模板變量進行快速生成


image.png

這是系統(tǒng)默認的一些模板,如果不合適自己,可以按照我的另外一篇文章,進行自定義


image.png

四、遇到的問題

  • 識別不到環(huán)境變量
    是因為配置環(huán)境變量的文件rest-client.private.env.json位置沒放正確,不能放到Scratches中,我理解的是放到和pom.xml同一層目錄即可


    image.png
  • Authorization老是提示token無效
    原因一:用了系統(tǒng)自帶的模板,有Bearer
    原因二:在去掉了Bearer之后,:和{{auth_token}}之間留了一個空格
    (正確應該去掉空格Authorization:{{auth_token}})


    image.png
  • POST請求提示500錯誤,但是又沒進入到接口當中
    是因為我把Content-Type: application/json中的Content-Type不知道怎么寫成了Accept

POST http://{{host}}:{{port}}/admin/tenant/enableLiveBroadcast
Authorization:{{auth_token}}
Content-Type: application/json

{
  "id": 1228230930170372097,
  "enableLiveBroadcast": 1
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容