V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
coolrequest
V2EX  ›  Java

Cool Request 更新啦, IDEA 里面免费、实用的接口调试插件

  •  
  •   coolrequest · 73 天前 · 1732 次点击
    这是一个创建于 73 天前的主题,其中的信息可能已经有所发展或是发生改变。

    theme: cyanosis highlight: zenburn

    前言

    在后端 SpringBoo 开发中,都需要一个接口测试工具,从一开始的 postman ,到现在的国产测试工具,数不胜数,而最方便的莫过于在 IDEA 中就可以调试,因为 IDEA 插件中有能力分析出当前项目所编写的 Controller 数据,可以进行统计,更方便我们发起 http 请求,不需要复制 url 到别的测试工具了,今天就推荐一款,名叫 Cool Request ,他纯免费、开源。

    效果图

    Cool Request 的界面非常简单,下面是他的主界面,可以收集项目的 Controller 信息。

    image.png

    基本 HTTP 请求

    当双击某个 Controller 时候,会跳转到请求发送界面,在这里可以填写参数,Cool Request 和同类的插件相比,在填写 Header 时候,也是有提示的,而其他没有,这一点非常方便。

    image.png

    结果预览

    Cool Request 也有五种不同的响应预览,会自动根据响应头中的 Content-Type 跳转到不同的预览效果里,有 json 、text 、image 、html 、xml 。

    image.png

    手动触发 SpringBoot 中的定时器。

    测试定时器时,不知道大家是怎么测试的,以前是通过单独写一个 Controller ,然后在内部调用一下,而用了 Cool Request ,居然可以支持手动触发,这样无论定时器的时间间隔是多少,都可以在 Cool Request 中随心所欲的调用。

    image.png

    反射调用

    这一点可能是有点抽象,不好理解,这个功能只有在特定场景下才能体会到极其方便。

    试想一下这个场景。

    1. Controller 返回的信息不需要用户信息,也就是一些全局的数据
    2. 但是 Controller 需要用户登录后才能使用,即需要附带 Token
    3. 你的项目具有拦截器,会拦截没有登录的用户

    这个时候你有没有想过,我这个 Controller 又没有用到用户信息,能不能在调试时候绕过拦截器,以前的做法可能是关闭拦截器,或者先登录,正常拿到 Token 后在调用,而 Cool Request 的这个功能就是解决这个问题的,他可以通过反射的一系列技术,绕过拦截器,将请求直接到达 Controller ,并返回结果。

    使用方式是在请求界面选择 reflex ,然后填写参数后发起请求。

    image.png

    但是 reflex 也有缺点,他同时也绕过了过滤器,并且没有办法让过滤器也执行,唯一的办法是发起正常的 HTTP 请求。

    强大的前后置脚本

    最方便的莫过于 Cool Request 提供了 java 的前后置脚本了,也算不上脚本了,习惯这么叫,而其他插件要不就是没有,要不就是提供的 JS 脚本,对不熟悉 JS 的人来说,增加了学习成本,而 Cool Request 就非常方便了,另外在编写代码时,是有语法提示的,例如在脚本中修改参数的 api ,也不需要过多的学习,几乎是 0 成本。在 handlerRequest 方法中,有两个参数,第一个是日志输出接口,可以使用他的 println 方法输出日志,会在右面的 log 窗口看到,第二个参数是 HTTPRequest ,他有一系列方法,使用.号时候就有提示,所有的方法我们一眼就能看出是做什么的。

    image.png

    更方便的是,脚本中可以调用项目的类,也支持第三方的类,比如 SpringBoot 内置的一些 Util 工具类,都可以调用,已经方便到极致了。

    但是也有一个小缺点,内置的编译器是 java8 的,也就是说,项目使用的 java 版本超过 8 ,或者是第三方库的版本超过 java8 ,就无法调用了,比如项目使用了 SpringBoot3 ,就无法调用,但是都可以在脚本中自己实现。

    在一些动态参数时候,非常有用,比如参数的签名值,是通过一些参数计算出来的,或者是动态时间。

    支持多种请求体

    Cool Request 支持六种请求体,也支持二进制文件上传。

    image.png

    快速导入 cURL 参数

    如果有一个 cURL 参数(可能是从浏览器中复制过来的),那么可以快速导入的 Cool Request 里面,同时也支持将请求复制为 cURL 格式。

    image.png

    导出到 Apifox

    如果团队使用了 apifox ,它还可以支持导出到 apifox 里面,虽然 apifox 自己也有插件,但是 apifox 不提供目录选择,而 Cool Request 支持,当然需要配置 apifox 的一些 token ,这点可以在插件的官网找到详细的说明。

    image.png

    全局搜索 API

    可以通过一个 api 路径来快速找到项目中的 Controller 位置。

    image.png

    静态资源服务器

    它内置了一个静态资源服务器,使用也非常简单,选择目录、选择端口、开启即可,就可以通过浏览器访问此目录下的文件了。

    image.png

    12 条回复    2024-04-16 14:38:50 +08:00
    aeiou520
        1
    aeiou520  
       73 天前
    ~~
    Nosub
        2
    Nosub  
       73 天前 via iPhone
    以独立应用开发应该受众更广吧,IDE 有点重,前段时间发现 postman 新版本经常登不上,想找一个替代品,折腾了一圈,发现其他应用不习惯,后来我退回到 postman 的旧版本了,然后用防火墙把 postman 的所有域名屏蔽了,安静了,也没有升级提示,打不开等问题了,有时候要改变用户的习惯真的很难。
    issakchill
        3
    issakchill  
       73 天前
    确实好用 搜 api 的速度比 restful 那个快
    coolrequest
        4
    coolrequest  
    OP
       73 天前
    @Nosub 是的,很多人就局限在自己使用过的产品,不愿意接触新的了
    coolrequest
        5
    coolrequest  
    OP
       73 天前
    @issakchill 感谢,后续有问题可以直接说哈。
    foolishcrab
        6
    foolishcrab  
       72 天前 via iPhone
    看起来确实不错 下了功夫的,点个赞
    dooonabe
        7
    dooonabe  
       72 天前
    支持支持!
    kassadin
        8
    kassadin  
       72 天前
    应该等上班了再发
    sowevo
        9
    sowevo  
       72 天前
    应该等上班了再发哈哈
    xiaofan305
        10
    xiaofan305  
       72 天前 via Android
    上班了再试试
    coolrequest
        11
    coolrequest  
    OP
       72 天前
    @kassadin 那我等上班在发一遍 ,哈哈哈
    loszhang
        12
    loszhang  
       11 天前
    这个 Code Request 和 restfultool 这个插件很像。我主要是常用全局搜索 API ,所以 restfultool 已经满足我的需求了。接口测试还是习惯使用 postman ,目前确实没有可以替换 postman 的存在。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2672 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:14 · PVG 19:14 · LAX 04:14 · JFK 07:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.