摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/IDEA-HTTP-Client/ 「芋道源码」欢迎转载,保留摘要,谢谢!
1. 概述
在日常开发中,在我们编写 HTTP API 后,可以采用 Postman 模拟调用测试,非常方便。如下图所示:
但是,开发是团队协作的,而 Postman 无法便利的团队共享。这就导致,在修改到其他成员开发的 API 时,我们不得不自己在重新创建 Postman 调用,非常麻烦。并且,如果是一个复杂的 API 时,例如说用户提交订单,需要构建的请求参数是比较多的。
友情提示:Postman 支持团队协作,免费版有次数限制。
基于这个痛点,艿艿推荐采用 IDEA HTTP Client 工具,取代 Postman 的使用。下面,我们来一起偷偷的学习下,不要告诉 🐶 芳。
2. IDEA HTTP Client
IDEA HTTP Client 是 IDEA 提供的 HTTP API 测试插件,默认内置,直接开启即可使用。
一个简单的使用示例,如下图所示:
因为 IDEA HTTP Client 采用后缀为 .http
的文本文件,所以可以和 Java 代码一起,使用 Git 进行版本管理,从而实现团队协作的共享。
3. 快速入门
本小节,我们来快速入门下 IDEA HTTP Client 的使用,涉及到 3 种常见 HTTP API 的示例:
- GET 请求
- POST 请求 + Form
- POST 请求 + JSON
在任一目录下,右键选择「HTTP Request」菜单,创建一个 .http
文件。如下图所示:
良心艿:艿艿的个人习惯,在 Controller 所在的包下,直接创建一个同名的
.http
文件,查找便利。
在 .http
文件的右上角,提供了五个菜单功能,比较简单,艿艿就不啰嗦结束了。胖友可以自己试着点一点,如下图所示:
3.1 使用示例
下面,我们在刚创建的 .http
文件中,编写三种常见 HTTP API 的使用示例。
良心艿:示例项目,对应 Github 仓库为 https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-71-http-debug/lab-71-idea-http-client 地址。
3.1.1 POST 请求 + Form 的示例
对应 Controller 的代码如下:
|
对应的 IDEA HTTP Client 的代码如下:
|
然后,点击绿色小箭头,即可发起请求。
3.1.2 POST 请求 + JSON 的示例
对应 Controller 的代码如下:
|
对应的 IDEA HTTP Client 的代码如下:
|
3.1.3 GET 请求的示例
对应 Controller 的代码如下:
|
对应的 IDEA HTTP Client 的代码如下:
|
3.2 Live Template 的支持
友情提示:对 Live Template 不了解的胖友,可以阅读《代码生成利器:IDEA 强大的 Live Templates》文章。
IDEA HTTP Client 内置了 6 个 Live Template 模板,方便我们快速创建 HTTP Request。如下图所示:
使用示例,如下图所示:
如果内置的 Live Template 无法满足胖友的诉求,可以进行自定义。
4. 进阶使用
本小节,我们来学习下 IDEA HTTP Client 的进阶使用,特别是环境变量。
4.1 环境变量
在 Spring Boot 项目中,我们通过 Profile 机制,实现不同环境,不同配置文件。在 IDEA HTTP Client 插件中,提供类似的机制,可以定义配置文件,抽取出不同环境的变量。
- 通过创建
http-client.env.json
配置文件,定义通用变量。例如说,url 地址、port 端口等等。 - 通过创建
http-client.private.env.json
配置文件,定义敏感变量。例如说,username/password 账号密码、token 访问令牌等等。
🔥 注意再注意,http-client.private.env.json
是定义定义敏感变量的配置文件,所以不要提交到 Git 仓库中!!!
4.1.1 使用示例
下面,我们来简单使用下。创建配置文件,如下图所示:
-
http-client.env.json
配置文件的内容如下:{ "local": { "baseUrl": "http://127.0.0.1:8080" }, "dev": { "baseUrl": "http://192.168.100.200:8080" } }
-
http-client.private.env.json
配置文件的内容如下:{ "local": { "username": "yudaoyuanma", "password": "123456", "token": "token001" }, "dev": { "username": "yutou", "password": "buzhidao", "token": "aoteman" } }
4.1.2 简单测试
下面,我们来简单测试下。如下图所示:
4.2 结果断言
IDEA HTTP Client 提供 Response Handler Script 机制,允许我们通过编写 JavaScript 脚本,进行响应结果的处理。
同时,它又提供了断言函数,这样它不仅仅能够作为一个 HTTP API 的调用工具,还能作为自动化测试工具。
4.2.1 使用示例
下面,我们来简单使用下。创建一个新的 .http
文件,如下图所示:
|
4.2.2 简单测试
下面,我们来简单测试下。
① 执行 001 测试,通过。如下图所示:
② 执行 002 测试,不通过。如下图所示:
4.3 结果暂存与使用
IDEA HTTP Client 提供了环境变量的设置函数,这样配合 Response Handler Script 机制,可以实现响应结果的暂存与使用的功能。
例如说,我们可以先调用登陆接口,接响应结果中的 token
暂存到环境变量中。然后,在调用其它接口时,就可以带上暂存到环境变量中的 token
啦。
4.3.1 使用示例
下面,我们来简单使用下。创建一个新的 .http
文件,如下图所示:
4.3.2 简单测试
下面,我们来简单测试下。
① 首先,调用 /user/get-current
接口,返回结果如下:
|
报错,因为在环境变量的 token_from_server
不存在,获取不到用户信息。
② 然后,调用 /user/login
接口,进行登陆,返回结果如下:
|
将响应结果的 token
设置到环境变量的 token_from_server
中。
③ 最后,调用 /user/get-current
接口,返回结果如下:
|
成功,说明此时环境变量的 token_from_server
存在。
可能胖友会好奇,我们暂存到环境变量的有效期有多久?答案是,存储在内存中,直到重启 IDEA 后失效。
666. 彩蛋
至此,我们已经完成 IDEA HTTP Client 的学习,一起来简单总结下:
- 通过创建
.http
文件,并创建接口对应的 Request 进行测试。- 通过将
.http
文件提供到 Git 仓库中,实现团队共享。 - 结合 IDEA 的 Live Template 功能,可以实现 Request 的快速创建。
- 通过将
- 在
http-client.env.json
和http-client.private.env.json
配置文件定义变量,实现不同环境的不同配置。 - 使用 Response Handler Script 机制,可以进行响应结果的处理。
- 搭配断言函数,可以将 IDEA HTTP Client 作为自动化测试工具。
- 搭配设置函数,实现结果的暂存与使用。
在额外补充一点,如果一个 HTTP 接口有多种情况的测试,最好创建多个 Request 噢,方便后续回归测试。如下图所示:
每个人喜欢的 HTTP 测试工具不同,欢迎胖友留言,进行讨论。