一款专为IntelliJ IDEA用户设计的插件,极大简化Spring项目中的API调试过程,功能强大(附源码)

前言

在软件开发过程中,尤其是Spring MVC(Boot)项目中,API调试调用是一项常见但繁琐的任务。现有的开发工具虽然提供了一些支持,但往往存在效率不高、操作复杂等问题。为了处理这些痛点,提升开发效率,一款新的工具应运而生。

介绍

Cool Request是一款专为IntelliJ IDEA用户设计的插件,它极大地简化了Spring项目中的API调试过程。这款插件具备以下特点:

  • 强大的参数推测能力:自动推算API所需的各种参数,包括URL、Header、JSON和表单参数。

  • 运行时反射调用:允许用户绕过拦截器,直接进入Controller方法,进行调试。

  • 手动触发定时器:提供了手动触发SpringBoot中的定时任务的能力。

  • 一键导出openapi格式:方便API文档的生成和共享。

  • 一键导入到apifox:支持将API导入到apifox平台,支持目录选择。

  • 复制请求为curl:快速复制API请求为curl命令,方便在其他环境中使用。

  • 前置/后置脚本处理:使用Java语法处理请求前后的逻辑。

  • 响应结果保存:一键保存HTTP响应结果到文件。

  • 多种响应格式预览:支持JSON、XML、图片、HTML和文本的快速预览。

  • 静态资源服务器:快速配置静态资源服务器,便于文件共享。

技术架构

Cool Request基于IntelliJ IDEA插件架构开发,利用了IDEA提供的API和扩展点,实现了与Spring MVC(Boot)项目的无缝集成。

部署方式

Cool Request的安装非常简单,用户可以通过以下两种方式之一进行安装:

  1. 离线安装 :下载插件的离线包,然后在IDEA的Settings > Plugins > Install Plugin From Disk中选择下载的文件进行安装。

  2. 在线安装 :在IDEA的Settings > Plugins搜索Cool Request,然后安装。

开源协议

Cool Request遵循GPL2.0开源协议。

即刻体验一波

Cool Request的使用教程提供了详细的指导,帮助用户快速掌握插件的使用。从扫描API、发起HTTP和反射请求,到环境配置、Spring网关自动发现、手动触发定时器,再到创建静态服务和导入cURL参数,Cool Request都提供了直观的cao作界面和简便的cao作流程。

特色功能

开启耗时追踪

Cool Request默认关闭方法耗时追踪,如果开启后,会影响发起API时的速度,如果不需要耗时追踪,可关闭

当正常发起HTTP请求时,Cool Request将分析一次目标方法,根据设置的深度,尽可能多的追踪方法,这需要花费一些时间,且视所设置深度为定。

如果自动分析无法满足需求,可在任意方法体内右击,选择Cool Request -> Add/Cancel Method To Trace,添加/取消目标方法。

自定义函数

Cool Request拥有强大得函数支持系统,当HTTP参数想要使用动态参数时,可根据自己需求,编写自定义函数。函数可使用在任意HTTP参数中,包括请求头、URL参数、Path变量、请求体中。

例如想要增加一个自定义函数,可编写以下代码。

复制代码
public String custom(){
    return "custom";
}

在任意HTTP参数值中,通过{``{函数名}}来引用此函数。

关闭函数转换 如果想关闭函数转换,可以设置中禁用

Cool Request支持在SpringBoot运行时调用任意容器内实例的方法、同时也包括静态方法。

调用任意方法

在想要调用的方法体内右击,选择CoolRequest->Call this Method

接着运行按钮即可。

当然,Cool Request支持大量常见的参数传递

快速扫描API

Cool Request提供两种API扫描方式:StaticDynamic,快速识别项目中的API端点。(1)Static扫描会尽可能多的扫描出API,但不会扫描第三方库中的数据,在IDEA 建立索引完成后自动触发一次Static扫描。(2)Dynamic仅在项目启动后有效,原理是从SpringBoot容器中获取数据,此方法获取的数据最全。动态扫描在项目启动后会自动刷新一次。

快速做API搜索

通过API路径快速搜索对应的Controller,插件提供两种方法唤起搜索界面。

  1. 顶部搜索图标
  1. 快捷键

Windows/Linux:Ctrl+Shift+N Mac: Cmd + Shift + O 选中Cool Request页来进行API搜索

  1. 快捷键 默认为Ctrl+Shift+S

可在设置中进行更改

可以建立多套环境配置

Cool Request提供了环境配置,可以配置不同参数、如URL主机、全局参数、全局请求头、全局x-www-form-urlencoded、全局form-data。

+号,输入环境名称、主机路径,"OK"即可增加新的环境,用户可通过不同环境,自行增加全局参数。

发起HTTP请求调试

扫描API成功后,任意API进行调试,Cool Request将发起HTTP请求。当扫描API成功后,双击将要调试的API。

会自动跳转到HTTP请求界面。

发起反射请求

选择使用反射调用,直接进入目标Controller方法,绕过HTTP请求创建。发射请求可绕过系统中的拦-截器,在开发时,可直接使请求进入到Controller方法。普通HTTP请求的流程如下:

  1. 构造HTTP参数

  2. 发起HTTP请求

  3. 进入Web容器

  4. 进入过滤器

  5. 进入拦-截器

  6. 进入Controller

而反射请求可以跳过其中的第3、第4步骤,而第5步是可选的,反射的流程如下:

  1. 构造HTTP参数

  2. 发起HTTP请求

  3. 进入拦-截器(可选择是否应用拦-截器)

  4. 进入Controller

进入参数配置界面,在左侧下拉框选中如下所示:

右侧 按钮即可发起反射请求。

Spring网关自动发现

网关程序启动后,自动提取配置路径并添加到环境变量中。Cool Request在网关程序启动后,会自动提取网关配置的路径,并添加到环境变量中,用户只需要根据实际修改配置即可。例如有以下代码:

复制代码
@Configuration
public class Config {
    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route("apiroute", r -> r.path("/api/**")
                        .filters(f -> f.stripPrefix(1))
                        .uri("http://localhost:8080"))
                .build();
    }
}

启动成功环境设置,可以发现会有一个名为apiroute的环境。

手动触发@Scheduled定时器

特色功能,手动触发具有@Scheduled注解的方法,无需等待Spring自动调度。手动触发定时器是Cool Request特色功能之一,他可以在运行时候,调用任意具有@Scheduled注解的方法,这样带来的好处是无需等待Spring自动调度,省去了开发人员调试定时器带来的麻烦。等项目启动后,在列表中选择要触发的函数名称。

双击方法进入调用界面,其中按钮即可发起调用。

手动触发定时器是Cool Request特色功能之一,他可以在运行时候,调用任意具有@XxlJob注解的方法,这样带来的好处是无需等待XXL-JOB自动调度,省去了开发人员调试定时器带来的麻烦。

手动触发XXL-JOB定时器

等项目启动后,在列表中选择要触发的函数名称。

双击方法进入调用界面,其中按钮并填写参数即可发起调用。

创建静态服务

快速配置静态资源服务器,便于本机数据共享。(1)进入静态服务器页面,+号。

(2)要共享的文件夹,选择监听的端口后,并左侧开关按钮,即可开启静态web服务。

(3)访问浏览器,输入对应文件名,即可下载/预览相关联的文件。

导入cURL参数

快速导入cURL命令中的参数,简化开发人员cao作。(1)参数界面中的cURL图标,选择Import cURL。

(2)填写cURL数据,并OK。通过Cool Request插件,用户可以享受到直观的cao作界面和简便的cao作流程,极大提升开发和调试API的效率。

结语

Cool Request作为一款提升开发效率的工具,以其强大的功能和易用性,为Spring MVC(Boot)项目的开发人员提供了极大的便利,相信将成为开发过程中不可或缺的助手。

源码地址:https://github.com/CorentinTh/it-tools

体验文档:https://it-tools.tech/

相关推荐
一只大侠的侠2 分钟前
React Native开源鸿蒙跨平台训练营 Day18自定义useForm表单管理实战实现
flutter·开源·harmonyos
吃虫子的人4 分钟前
记录使用Arthas修改线上源码重新加载的一次过程
java·arthas
一只大侠的侠7 分钟前
React Native开源鸿蒙跨平台训练营 Day20自定义 useValidator 实现高性能表单验证
flutter·开源·harmonyos
figo10tf31 分钟前
Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
java·spring boot·后端
zhangyi_viva35 分钟前
Spring Boot(七):Swagger 接口文档
java·spring boot·后端
橙露39 分钟前
Spring Boot 核心原理:自动配置机制与自定义 Starter 开发
java·数据库·spring boot
晚霞的不甘39 分钟前
Flutter for OpenHarmony 可视化教学:A* 寻路算法的交互式演示
人工智能·算法·flutter·架构·开源·音视频
小程故事多_8040 分钟前
Agent Infra核心技术解析:Sandbox sandbox技术原理、选型逻辑与主流方案全景
java·开发语言·人工智能·aigc
冰暮流星40 分钟前
sql语言之分组语句group by
java·数据库·sql
望舒51343 分钟前
代码随想录day25,回溯算法part4
java·数据结构·算法·leetcode