前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我终于决定要放弃 Postman,选择了牛逼的神仙工具 IDEA HTTP Client !贼爽

我终于决定要放弃 Postman,选择了牛逼的神仙工具 IDEA HTTP Client !贼爽

作者头像
芋道源码
发布2021-01-08 15:07:33
4K0
发布2021-01-08 15:07:33
举报
文章被收录于专栏:芋道源码1024芋道源码1024

1. 概述

在日常开发中,在我们编写 HTTP API 后,可以采用 Postman 模拟调用测试,非常方便。如下图所示:

Postman 接口测试

但是,开发是团队协作的,而 Postman 无法便利的团队共享。这就导致,在修改到其他成员开发的 API 时,我们不得不自己在重新创建 Postman 调用,非常麻烦。并且,如果是一个复杂的 API 时,例如说用户提交订单,需要构建的请求参数是比较多的。

友情提示:Postman 支持团队协作,免费版有次数限制。

基于这个痛点,艿艿推荐采用 IDEA HTTP Client 工具,取代 Postman 的使用。下面,我们来一起偷偷的学习下,不要告诉 ? 芳。

我要学习!

2. IDEA HTTP Client

IDEA HTTP Client 是 IDEA 提供的 HTTP API 测试插件,默认内置,直接开启即可使用。

IDEA HTTP Client 插件

一个简单的使用示例,如下图所示:

IDEA HTTP Client 示例

因为 IDEA HTTP Client 采用后缀为 .http文本文件,所以可以和 Java 代码一起,使用 Git 进行版本管理,从而实现团队协作的共享

3. 快速入门

本小节,我们来快速入门下 IDEA HTTP Client 的使用,涉及到 3 种常见 HTTP API 的示例:

  • GET 请求
  • POST 请求 + Form
  • POST 请求 + JSON

在任一目录下,右键选择「HTTP Request」菜单,创建一个 .http 文件。如下图所示:

创建 HTTP Request

良心艿:艿艿的个人习惯,在 Controller 所在的包下,直接创建一个同名的 .http 文件,查找便利。

.http 文件的右上角,提供了五个菜单功能,比较简单,艿艿就不啰嗦结束了。胖友可以自己试着点一点,如下图所示:

HTTP Request 菜单

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 的代码如下:

代码语言:javascript
复制
@PostMapping("/user/login")
public Map<String, Object> login(@RequestParam("username") String username,
                                 @RequestParam("password") String password) {
    if ("yudaoyuanma".equals(username) && "123456".equals(password)) {
        Map<String, Object> tokenMap = new HashMap<>();
        tokenMap.put("userId", 1);
        tokenMap.put("token", "token001");
        return tokenMap;
    }
    throw new RuntimeException("小朋友,你的账号密码不正确哟!");
}

对应的 IDEA HTTP Client 的代码如下:

代码语言:javascript
复制
### 测试 /user/login:登陆成功
POST http://127.0.0.1:8080/user/login
Content-Type: application/x-www-form-urlencoded

username=yudaoyuanma&password=123456

讲解示例

然后,点击绿色小箭头,即可发起请求。

3.1.2 POST 请求 + JSON 的示例

对应 Controller 的代码如下:

代码语言:javascript
复制
@PostMapping("/user/update")
public Boolean update(@RequestBody UserUpdateVO updateVO) {
    logger.info("[update][收到更新请求:{}]", updateVO.toString());
    return true;
}

对应的 IDEA HTTP Client 的代码如下:

代码语言:javascript
复制
### 测试 /user/update:更新成功
POST http://127.0.0.1:8080/user/update
Content-Type: application/json

{
  "nickname": "我是昵称",
  "gender": 1
}

讲解示例

3.1.3 GET 请求的示例

对应 Controller 的代码如下:

代码语言:javascript
复制
@GetMapping("/user/get-current")
public Map<String, Object> getCurrentUser(@RequestHeader("Authorization") String authorization,
                                          @RequestParam("full") boolean full) {
    if ("token001".equals(authorization)) {
        Map<String, Object> userInfo = new HashMap<>();
        userInfo.put("id", 1);
        // full 为 true 时,获得完整信息
        if (full) {
            userInfo.put("nickname", "芋道源码");
            userInfo.put("gender", 1);
        }
        return userInfo;
    }
    throw new RuntimeException("小朋友,你没有登录哟!");
}

对应的 IDEA HTTP Client 的代码如下:

代码语言:javascript
复制
### 测试 /user/get-current:获取成功
GET http://127.0.0.1:8080/user/get-current?full=true
Authorization: token001

讲解示例

3.2 Live Template 的支持

友情提示:对 Live Template 不了解的胖友,可以阅读《代码生成利器:IDEA 强大的 Live Templates》文章。

IDEA HTTP Client 内置了 6 个 Live Template 模板,方便我们快速创建 HTTP Request。如下图所示:

内置 Live Template 模板

使用示例,如下图所示:

Live Template 示例

如果内置的 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 配置文件的内容如下:

代码语言:javascript
复制
{
  "local": {
    "baseUrl": "http://127.0.0.1:8080"
  },
  "dev": {
    "baseUrl": "http://192.168.100.200:8080"
  }
}

http-client.private.env.json 配置文件的内容如下:

代码语言:javascript
复制
{
  "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 文件,如下图所示:

环境变量的测试

代码语言:javascript
复制
### 001 测试 /user/login:登陆成功
POST http://127.0.0.1:8080/user/login
Content-Type: application/x-www-form-urlencoded

username=yudaoyuanma&password=123456

> {%
client.test("验证登陆成功", function (){
  client.assert(response.status === 200, "响应状态应该是 200,结果是 " + response.status)
  client.assert(response.body.userId === 1, "响应的 userId 应该是 1,结果是 " + response.body.userId)
  client.assert(response.body.token === "token001", "响应的 token 应该是 token001,记过是 " + response.body.token)
});
%}

### 002 测试 /user/login:登陆失败,密码不正确
POST http://127.0.0.1:8080/user/login
Content-Type: application/x-www-form-urlencoded

username=yudaoyuanma&password=buzhidao

> {%
client.test("验证登陆失败", function (){
  client.assert(response.status === 200, "响应状态应该是 200,结果是 " + response.status)
});
%}

4.2.2 简单测试

下面,我们来简单测试下。

① 执行 001 测试,通过。如下图所示:

001 测试:通过

② 执行 002 测试,不通过。如下图所示:

002 测试:不通过

4.3 结果暂存与使用

IDEA HTTP Client 提供了环境变量设置函数,这样配合 Response Handler Script 机制,可以实现响应结果的暂存与使用的功能。

例如说,我们可以先调用登陆接口,接响应结果中的 token 暂存到环境变量中。然后,在调用其它接口时,就可以带上暂存到环境变量中的 token 啦。

4.3.1 使用示例

下面,我们来简单使用下。创建一个新的 .http 文件,如下图所示:

结果暂存与使用

4.3.2 简单测试

下面,我们来简单测试下。

① 首先,调用 /user/get-current 接口,返回结果如下:

代码语言:javascript
复制
{
  "timestamp": "2020-12-19T17:35:58.033+0000",
  "status": 500,
  "error": "Internal Server Error",
  "message": "小朋友,你没有登录哟!",
  "path": "/user/get-current"
}

报错,因为在环境变量token_from_server 不存在,获取不到用户信息。

② 然后,调用 /user/login 接口,进行登陆,返回结果如下:

代码语言:javascript
复制
{
  "userId": 1,
  "token": "token001"
}

将响应结果的 token 设置到环境变量token_from_server 中。

③ 最后,调用 /user/get-current 接口,返回结果如下:

代码语言:javascript
复制
{
  "gender": 1,
  "nickname": "芋道源码",
  "id": 1
}

成功,说明此时环境变量token_from_server 存在。


可能胖友会好奇,我们暂存到环境变量有效期有多久?答案是,存储在内存中,直到重启 IDEA 后失效。

666. 彩蛋

至此,我们已经完成 IDEA HTTP Client 的学习,一起来简单总结下:

  • 通过创建 .http 文件,并创建接口对应的 Request 进行测试
    • 通过将 .http 文件提供到 Git 仓库中,实现团队共享
    • 结合 IDEA 的 Live Template 功能,可以实现 Request 的快速创建
  • http-client.env.jsonhttp-client.private.env.json 配置文件定义变量,实现不同环境不同配置
  • 使用 Response Handler Script 机制,可以进行响应结果的处理。
    • 搭配断言函数,可以将 IDEA HTTP Client 作为自动化测试工具。
    • 搭配设置函数,实现结果的暂存与使用。

在额外补充一点,如果一个 HTTP 接口有多种情况的测试,最好创建多个 Request 噢,方便后续回归测试。如下图所示:

一个接口,多个故事

每个人喜欢的 HTTP 测试工具不同,欢迎胖友留言,进行讨论。


End~继续抠脚。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 芋道源码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 概述
  • 2. IDEA HTTP Client
  • 3. 快速入门
    • 3.1 使用示例
      • 3.1.1 POST 请求 + Form 的示例
      • 3.1.2 POST 请求 + JSON 的示例
      • 3.1.3 GET 请求的示例
    • 3.2 Live Template 的支持
    • 4. 进阶使用
      • 4.1 环境变量
        • 4.1.1 使用示例
        • 4.1.2 简单测试
      • 4.2 结果断言
        • 4.2.1 使用示例
        • 4.2.2 简单测试
      • 4.3 结果暂存与使用
        • 4.3.1 使用示例
        • 4.3.2 简单测试
    • 666. 彩蛋
    相关产品与服务
    Prowork 团队协同
    ProWork 团队协同(以下简称 ProWork )是便捷高效的协同平台,为团队中的不同角色提供支持。团队成员可以通过日历、清单来规划每⽇的工作,同时管理者也可以通过统计报表随时掌握团队状况。ProWork 摒弃了僵化的流程,通过灵活轻量的任务管理体系,满足不同团队的实际情况,目前 ProWork 所有功能均可免费使用。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档