idea 可以通過 RESTful Web 做接口調試,包括調試外部接口。具體可以參照 : https://www.jetbrains.com/help/idea/restful-webservices.html
一、準備
需要安裝 RESTful Web Services 插件,通過 Ctrl + Alt + s ==> Plugins ==> 搜索 RESTful Web Services
,如圖:
二、初體驗
進入 rest 控制檯, idea 導航欄 ==> Tools ==> HTTP Client ==> Test RESTFUL Web Service
如圖:
點擊 Test RESTful Web Services
, 效果如下 :
這樣就完成一一個請求,如果在控制檯中點擊了 Convert request to the new format
就會以 .http 文件的方式保存到 Scratches and Consoles 下的 Scratches 文件夾中,如圖:
三、創建HTTP請求文件
除了通過控制文件發送請求,也可以自己創建 .http 文件發送請求。可以通過右鍵 new ==> HTTP Request
指定位置創建一個 RESTful 請求文件(如下圖),或者通過快捷鍵 Ctrl + Shift + Alt + Insert
選擇 HTTP Request 創建一個臨時文件文件保存到上面的 Scratches 文件夾中。
四、環境變量
編寫HTTP請求時,可以使用環境變量來參數化其元素 。例如,可以使用{{host}}佔位符代替在請求中顯式提供主機名 。然後,在項目中定義一組環境變量,其中包含所需的主機定義。執行請求時,可以在定義的環境之間進行選擇。
變量可以保存以下請求組件的值:
- 請求ip,端口和路徑
- 查詢參數或值
- 請求頭的值
- 在外部文件爲請求體提供任意值
定義環境變量
環境變量在環境文件中定義的,文件定義在與 .http 文件相同目錄下,文件可以是 : rest-client.env.json 或者 http-client.env.json, rest-client.private.env.json 或者 http-client.private.env.json。
rest-client.env.json 或者 http-client.env.json 表示這個文件是包含普通的變量,並把裏面的變量分發到項目中。
rest-client.private.env.json 或者 http-client.private.env.json 表示該文件是一個私人的文件,可能包括密碼,令牌,證書和其他敏感信息。默認情況下,此文件被添加到 VCS 忽略文件列表中。在 http-client.private.env.json 文件中指定的變量的值將覆蓋環境文件中的值。
具體使用
文件結構
report_api.http 中數據
POST {{host}}/api/employee-user/logIn
Content-Type: application/json
{
"username": "{{username}}",
"password": "{{password}}"
}
###
GET {{host}}/api/reportApplet/list?state=-1&type=3
Accept: */*
Cache-Control: no-cache
token: {{token}}
Content-Type: application/json
###
# 修改狀態
POST {{host}}/api/operateProcessGroup/state
Accept: */*
Cache-Control: no-cache
token: {{token}}
Content-Type: application/json
{
"id":10,
"state": "{{enable_state}}"
}
###
POST {{host}}/api/operateProcessGroup/modify
Accept: */*
Cache-Control: no-cache
token: {{token}}
Content-Type: application/json
{
"id":10,
"name":{{unresolved-var}},
"state":0
}
http-client.env.json 中數據 :
{
"dev": {
"host": "http://127.0.0.1:8080",
"token": "c10fb622c769d74200c71b46ad74afaa",
"enable_state": "1"
},
"line": {
"host": "https://www.xxx.com",
"token": "8ad4f5f92728bf43ee807444f9d78876",
"enable_state": "1"
}
}
http-client.private.env.json 中數據 :
{
"dev": {
"username": "test",
"password": "test"
},
"line": {
"username": "admin",
"password": "admin"
}
}
運行時就可以選擇 dev 和 line 兩種方式
這裏的 dev 和 line 對應前面 http-client.env.json 中定義的 dev 和 line。
注意: 在最後一個請求中,由於 {{unresolved-var}}未在環境文件中定義變量{{unresolved-var}},因此在種情況下,IntelliJ IDEA均會將文本作爲請求的一部分發送。
五、簡單語法
對於 .http 文件中的一些簡單語法 :
- 註釋 :
//
或者#
- 使用三個#號分割 request 請求 :
###
- web 的 basic 或者 digest 認證
// Basic authentication
GET http://example.com
Authorization: Basic username password
###
// Digest authentication
GET http://example.com
Authorization: Digest username password
- 普通請求體
POST http://example.com:8080/api/html/post
Content-Type: application/json
{ "key" : "value", "list": [1, 2, 3] }
- 不添加執行日誌
// @no-log
GET example.com/api
六、響應處理程序腳本
將腳本插入請求中
以 >
開頭,然後把腳本包裝在 {%%}
裏面。
斷言
GET https://example.com/status/200
> {%
client.test("Request executed successfully", function() {
client.assert(response.status === 200, "Response status is not 200");
});
%}
腳本日誌
client.log("this is log");
存儲變量
通過 client.global.set
存儲全局變量,通過 client.global.get
獲取變量。可以通過 client
對象在內存中存儲數據,可以保留到 idea 關閉之前。
除了 get 獲取值外,還可以通過變量獲取值,如圖:
那麼在一處存儲了變量, 就可以在其他地方調用了,非常適合處理 token,就有點像瀏覽器登錄了…
七、請求結果記錄
請求結果一般存儲在該項目的 .idea 目錄下的 httpRequests 目錄裏面的 http-requests-log.http 文件中,如下 :
查看返回結果 json 通過 Ctrl + b 或者 ctrl + 鼠標左鍵進入返回的 json 詳情,途中有誤 emm…