• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

使用IDEA提供的HTTP Client替代Postman

武飞扬头像
法号轻尘
帮助1

一、背景说明

  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,放入全局变量,其他接口引用
  1.  
    ### 用户登录
  2.  
    POST http://localhost:6800/base/user/login
  3.  
    Content-Type: application/json
  4.  
     
  5.  
    {
  6.  
    "loginType": 1,
  7.  
    "username": "admin",
  8.  
    "password": "xxxxxx"
  9.  
    }
  10.  
     
  11.  
    > {%
  12.  
    client.log("将当前用户登录的token存储到全局变量中");
  13.  
    client.assert(response.status===200, "登录失败,用户名或密码错误")
  14.  
    client.global.set("token", response.body.data.token);
  15.  
    %}
  16.  
     
  17.  
    ### 查询用户基本信息
  18.  
     
  19.  
    GET http://localhost:6800/base/user/info
  20.  
    Accept: application/json
  21.  
    token: {{token}}
学新通
  1. 简单不?爽不爽?什么,还不爽?请求地址能不能全局定义,且支持分环境?当然可以,继续看

学新通

学新通

  • 略加改造,指定环境运行
  1.  
    ### 查询用户基本信息
  2.  
     
  3.  
    GET {{baseUrl}}/base/user/info
  4.  
    Accept: application/json
  5.  
    token: {{token}}

学新通

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

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

  1.  
    ######################## 语法说明 ########################
  2.  
     
  3.  
    ### 使用三个 # 来分隔多个请求
  4.  
     
  5.  
    # GET/POST 请求地址(可拼接查询参数)
  6.  
    # 请求头键值对
  7.  
     
  8.  
    # 请求体
  9.  
     
  10.  
    # > {% %}
  11.  
     
  12.  
    # 响应处理
  13.  
    # 使用 >符号 打头,和 shell 很像,然后用 {% %} 括起来的脚本内容
  14.  
    # 在脚本中可以使用 javascript 原生语法
  15.  
    # 脚本中有几个内置对象 client 表示当前客户端,response 表示响应结果
  16.  
    # 注释 : // 或者 #
  17.  
    # 支持 basic / digest 认证,Authorization: Basic|Digest username password
  18.  
    # 断言 client.assert()
  19.  
    # 脚本日志 client.log()
  20.  
    # 存储/获取全局变量 client.global.set/get {{xxx}}
  21.  
    # 环境变量文件 配置全局环境参数 http-client.env.json
  22.  
    # 学以上这么多够用了
  23.  
    # 扩展了解:文件上传怎么弄,我日常用不到,因为都是异步上传
  24.  
    # 扩展了解:断言,我觉得用处不大
学新通

学新通

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfjkhi
系列文章
更多 icon
同类精品
更多 icon
继续加载