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 文件发送请求。可以通过右键 new ==> HTTP Request
指定位置创建一个 RESTful 请求文件(如下图),或者通过快捷键 Ctrl + Shift + Alt + Insert
选择 HTTP Request 创建一个临时文件文件保存到上面的 Scratches 文件夹中。
编写HTTP请求时,可以使用环境变量来参数化其元素 。例如,可以使用{{host}}占位符代替在请求中显式提供主机名 。然后,在项目中定义一组环境变量,其中包含所需的主机定义。执行请求时,可以在定义的环境之间进行选择。
变量可以保存以下请求组件的值:
环境变量在环境文件中定义的,文件定义在与 .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 文件中的一些简单语法 :
//
或者 #
###
// 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…