目录
前言
从postman到IDEA REST Client
IDEA REST Client控制台
1、激活IDEA自带RestClient插件
2、安装 RESTful Web Services 插件
历史请求记录
构建HTTP请求脚本
简单语法 :
响应处理程序脚本
断言
存储变量
请求结果记录
环境变量
定义环境变量
具体使用
文件结构
report_api.http 请求文件:
http-client.env.json 普通变量 :
http-client.private.env.json 私有变量 :
结语
接口调试是每个软件开发从业者必不可少的一项技能,一个项目的的完成,可能接口测试调试的时间比真正开发写代码的时间还要多,几乎是每个开发的日常工作项。
所谓工欲善其事必先利其器,在没有尝到IDEA REST真香之前,postman(chrome的一款插件)确实是一个非常不错的选择,具有完备的REST Client功能和请求历史记录功能。
但是当使用了IDEA REST之后,postman就可以丢了,因为,IDEA REST Client具有postman的所有功能,而且还有postman没有的功能,继续往下看。
真香定律的原因有如下几个:
- 首先postman的所有功能IDEA REST Client都具备了,如REST Client控制台和历史请求记录
- 其次如果能够在一个生产工具里完成开发和调试的事情,干嘛要切换到另一个工具呢
- 然后IDEA REST Client还支持环境配置区分的功能,以及接口响应断言和脚本化处理的能力
- IDEA REST Client的请求配置可以用文件配置描述,所以可以跟随项目和项目成员共享
打开RestClient 窗口,Rest Client激活以后可以通过Tools–>Test Restful Web Service 打开窗口
如果你的IDEA没有自带RestClient插件,没关系,通过 Ctrl + Alt + s ==> Plugins ==> 搜索 RESTful Web Services(IDEA 2019.2版本后集成了
RESTful Web Services 插件)
打开RestClient 窗口有变,Tools ==> HTTP Client ==> Test RESTFUL Web Service
这样就完成一一个请求,如果在控制台中点击了 Convert request to the new format
就会以 .http 文件的方式保存到 Scratches and Consoles 下的 Scratches 文件夹中,如图:
IntelliJ IDEA自动将最近执行的50个请求保存到http-requests-log.http 文件中,该文件存储在项目的.idea / httpRequests / 目录下。使用请求历史记录,您可以快速导航到特定响应并再次发出请求。文件内容大如下图所示,再次发出请求只要点击那个运行按钮即可。
如果从请求历史记录再次发出请求,则其执行信息和响应输出的链接将添加到请求历史记录文件的顶部。
上面的历史记录就是一个完整的IDEA REST Client请求脚本,如果你是从控制台触发的,那么可以直接复制历史请求记录的文件放到项目里作为HTTP请求的脚本,给其他成员共享,如果不是,也可以直接新建一个.http或者.rest结尾的文件,IDEA会自动识别为HTTP请求脚本。
下面介绍怎么创建 .http 文件发送请求文件
可以通过右键 new ==> HTTP Request
指定位置创建一个 RESTful 请求文件(如下图),或者通过快捷键 Ctrl + Shift + Alt + Insert
选择 HTTP Request 创建一个临时文件文件保存到上面的 Scratches 文件夹中。
1、注释 : //
或者 #
2、使用三个#号分割 request 请求 : ###
3、web 的 basic 或者 digest 认证
// Basic authentication
GET http://example.com
Authorization: Basic username password
###
// Digest authentication
GET http://example.com
Authorization: Digest username password
4、普通请求体
POST http://example.com:8080/api/html/post
Content-Type: application/json
{ "key" : "value", "list": [1, 2, 3] }
5、不添加执行日志
// @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…
编写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 文件中指定的变量的值将覆盖环境文件中的值。
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
}
{
"dev": {
"host": "http://127.0.0.1:8080",
"token": "c10fb622c769d74200c71b46ad74afaa",
"enable_state": "1"
},
"line": {
"host": "https://www.xxx.com",
"token": "8ad4f5f92728bf43ee807444f9d78876",
"enable_state": "1"
}
}
{
"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均会将文本作为请求的一部分发送。
postman有口皆碑,确实是一个非常不错的必备工具。但是,IDEA REST Client也真的很不错,值得尝试一下,和第三方做接口对接时,项目里必备一个rest-http.http接口请求文件,满足自己的同时也成方便了他人。