使用IDEA提供的HTTP Client替代Postman

一、背景说明

  1. 现在主流应用系统都采用前后端分离架构设计了
  2. 那么后端API接口的测试,你用什么工具?Swagger、Postman是不是?
  3. 今天我告诉你用日常使用的IDEA,即可获得更好的体验
  4. swagger2测试是方便:
    • 不过每次测试的数据不能复用
    • 应该是临时存再浏览器缓存里,一段时间就没了
    • 而且不好共享给他人
  5. Postman功能是强大,确实优秀
    • 能保存每次测试的数据和接口配置
    • 对比swagger缺点就是,地址、参数结构第一次都要手动写
    • 其次个人觉得太重了,早期Postman还挺挺轻量级,现在感觉做的很重,现在安装包都到121M了
    • 以上纯属我个人主观感受,不喜勿喷
  6. 所以使用IDEA HTTP request 工具不香吗?
    • 能少一个工具是一个,比如IDEA 中的 Git插件其实就挺好用,替代笨重的 SourceTree
    • 适合程序员用,代码都是很透明,语法很简洁
    • 可以作为项目文件,通过 Git 提交到仓库,大家共享文件
    • 共同维护接口请求数据,自然就不会出现调试别人接口还要导入他人数据
    • 这里还多说一点,原则上自己开发的接口,后端应该都需要本地测试通过才可以提交代码
    • 所以,用这款工具,还可以作为一个是否自测的检查标准,就是说,必须让开发将该http文件、测试返回值JSON与源代码一并提交
    • 总之,就是方便 测试用例、测试参数、测试数据的 共享

二、下面开始体验

  1. 创建HTTP Client,这里就直接推荐你创建一个.http文件

  1. 然后来一个hello word

    • 返回结果如下

    • 是不是超级简单
  2. 配合restfultoolkit插件

    • 如果你还想更懒一点,idea安装下restfultoolkit插件
    • 然后在你的Controller方法上点下,就这样:

    • 看到这里就问你,香不香?

三、接下来我们来点复杂的

  1. 上面可能太简单了是吧?一般测试至少要登录对吧?没关系
  2. 下面演示流程:用户登录,获得token,放入全局变量,其他接口引用
### 用户登录
POST http://localhost:6800/base/user/login
Content-Type: application/json

{
  "loginType": 1,
  "username": "admin",
  "password": "xxxxxx"
}

> {%
client.log("将当前用户登录的token存储到全局变量中");
client.assert(response.status===200, "登录失败,用户名或密码错误")
client.global.set("token", response.body.data.token);
%}

### 查询用户基本信息

GET http://localhost:6800/base/user/info
Accept: application/json
token: {{token}}
  1. 简单不?爽不爽?什么,还不爽?请求地址能不能全局定义,且支持分环境?当然可以,继续看

  • 略加改造,指定环境运行
### 查询用户基本信息

GET {{baseUrl}}/base/user/info
Accept: application/json
token: {{token}}

轻松搞定,这里我遇到了一个问题提下,就是看我的环境变量名称本来是local、dev、uat,结果dev死活不行,提示找到多个dev,其他名字都行,不知道是不是不过,于是我都加了个前缀,如果你也遇到了,欢迎交流

四、最后总结下(日常够用了)

######################## 语法说明 ########################

### 使用三个 # 来分隔多个请求

# GET/POST 请求地址(可拼接查询参数)
# 请求头键值对

# 请求体

# > {% %}

# 响应处理
# 使用 >符号 打头,和 shell 很像,然后用 {% %} 括起来的脚本内容
# 在脚本中可以使用 javascript 原生语法
# 脚本中有几个内置对象 client 表示当前客户端,response 表示响应结果
# 注释 : // 或者 #
# 支持 basic / digest 认证,Authorization: Basic|Digest username password
# 断言 client.assert()
# 脚本日志 client.log()
# 存储/获取全局变量 client.global.set/get {{xxx}}
# 环境变量文件 配置全局环境参数 http-client.env.json
# 学以上这么多够用了
# 扩展了解:文件上传怎么弄,我日常用不到,因为都是异步上传
# 扩展了解:断言,我觉得用处不大

最后要注意下,创建的.http文件都放在 scratches 下,返回值才可以正常回写到.http文中,如果将文件放在你的其他模块目录下,运行都正常,就是没有回写json结果,具体看你自己需求了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值