highlight: zenburn
前言
在后端 SpringBoo 开发中,都需要一个接口测试工具,从一开始的 postman ,到现在的国产测试工具,数不胜数,而最方便的莫过于在 IDEA 中就可以调试,因为 IDEA 插件中有能力分析出当前项目所编写的 Controller 数据,可以进行统计,更方便我们发起 http 请求,不需要复制 url 到别的测试工具了,今天就推荐一款,名叫 Cool Request ,他纯免费、开源。
插件名称:Cool Request
Github: https://github.com/houxinlin/cool-request
文档链接: https://plugin.houxinlin.com
作用: 简化 SpringBoot 后端接口调试流程。
安装方式:IDEA 插件商店中搜索 Cool Request
效果图
Cool Request 的界面非常简单,下面是他的主界面,可以收集项目的 Controller 信息。
基本 HTTP 请求
当双击某个 Controller 时候,会跳转到请求发送界面,在这里可以填写参数,Cool Request 和同类的插件相比,在填写 Header 时候,也是有提示的,而其他没有,这一点非常方便。
结果预览
Cool Request 也有五种不同的响应预览,会自动根据响应头中的 Content-Type 跳转到不同的预览效果里,有 json 、text 、image 、html 、xml 。
手动触发 SpringBoot 中的定时器。
测试定时器时,不知道大家是怎么测试的,以前是通过单独写一个 Controller ,然后在内部调用一下,而用了 Cool Request ,居然可以支持手动触发,这样无论定时器的时间间隔是多少,都可以在 Cool Request 中随心所欲的调用。
反射调用
这一点可能是有点抽象,不好理解,这个功能只有在特定场景下才能体会到极其方便。
试想一下这个场景。
[ol]
[/ol]
这个时候你有没有想过,我这个 Controller 又没有用到用户信息,能不能在调试时候绕过拦截器,以前的做法可能是关闭拦截器,或者先登录,正常拿到 Token 后在调用,而 Cool Request 的这个功能就是解决这个问题的,他可以通过反射的一系列技术,绕过拦截器,将请求直接到达 Controller ,并返回结果。
使用方式是在请求界面选择 reflex ,然后填写参数后发起请求。
但是 reflex 也有缺点,他同时也绕过了过滤器,并且没有办法让过滤器也执行,唯一的办法是发起正常的 HTTP 请求。
强大的前后置脚本
最方便的莫过于 Cool Request 提供了 java 的前后置脚本了,也算不上脚本了,习惯这么叫,而其他插件要不就是没有,要不就是提供的 JS 脚本,对不熟悉 JS 的人来说,增加了学习成本,而 Cool Request 就非常方便了,另外在编写代码时,是有语法提示的,例如在脚本中修改参数的 api ,也不需要过多的学习,几乎是 0 成本。在 handlerRequest 方法中,有两个参数,第一个是日志输出接口,可以使用他的 println 方法输出日志,会在右面的 log 窗口看到,第二个参数是 HTTPRequest ,他有一系列方法,使用.号时候就有提示,所有的方法我们一眼就能看出是做什么的。
更方便的是,脚本中可以调用项目的类,也支持第三方的类,比如 SpringBoot 内置的一些 Util 工具类,都可以调用,已经方便到极致了。
但是也有一个小缺点,内置的编译器是 java8 的,也就是说,项目使用的 java 版本超过 8 ,或者是第三方库的版本超过 java8 ,就无法调用了,比如项目使用了 SpringBoot3 ,就无法调用,但是都可以在脚本中自己实现。
在一些动态参数时候,非常有用,比如参数的签名值,是通过一些参数计算出来的,或者是动态时间。
支持多种请求体
Cool Request 支持六种请求体,也支持二进制文件上传。
快速导入 cURL 参数
如果有一个 cURL 参数(可能是从浏览器中复制过来的),那么可以快速导入的 Cool Request 里面,同时也支持将请求复制为 cURL 格式。
导出到 Apifox
如果团队使用了 apifox ,它还可以支持导出到 apifox 里面,虽然 apifox 自己也有插件,但是 apifox 不提供目录选择,而 Cool Request 支持,当然需要配置 apifox 的一些 token ,这点可以在插件的官网找到详细的说明。
全局搜索 API
可以通过一个 api 路径来快速找到项目中的 Controller 位置。
静态资源服务器
它内置了一个静态资源服务器,使用也非常简单,选择目录、选择端口、开启即可,就可以通过浏览器访问此目录下的文件了。
request, cool, controller, apifox