三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

一个 Java 开发者的 5 个调试时刻:用 Cool Request 在 IDEA 里完成一站式 API 调试

一个 Java 开发者的 5 个调试时刻:用 Cool Request 在 IDEA 里完成一站式 API 调试

一个 Java 开发者的 5 个调试时刻:用 Cool Request 在 IDEA 里完成一站式 API 调试

【免费下载链接】cool-requestIDEA API、Java Method debug tools项目地址: https://gitcode.com/gh_mirrors/co/cool-request

IDEA 接口调试插件 Cool Request 的反射调用、定时任务手动触发、参数自动推测与一键导出 OpenAPI 实操记录

周一早上九点,阿远接手了一个 Spring Boot 老项目,三个窗口来回切:IDEA 里找接口、Postman 里拼请求、浏览器里翻文档。午休时他把同事推荐的 Cool Request 装进了 IDEA——一个开源 API 调试插件,能自动扫描项目里的 Controller 和定时任务,直接在 IDE 里发 HTTP 请求、反射调用方法、生成测试参数,还能一键导出接口文档。下面是他用了一整天之后的记录。

09:00 上午的时间,耗在了三个窗口之间

阿远之前调试接口的流程是:先在 IDEA 里顺着代码找 Controller 的路径和参数,再切到 Postman 填 URL、Headers、Body,发出去发现报错,又切回 IDEA 看日志改代码。一来一回,一个接口少说十分钟,中间还总记混 URL 拼写。

装好 Cool Request 后,IDEA 右侧多了一个面板,项目里所有 Spring Boot 的 Controller 被自动扫描出来,按包名、类名排成一棵树,共 33 个接口一目了然:

▲ 面板自动扫描项目全部 Controller,双击任意接口即可定位到源码。

10:30 第一次点下 reflex:绕到后厨直接找厨师

阿远遇到的第一个拦路虎很典型:接口GET /admin/user/hello一调用就返回 401,提示"需要认证"。走 HTTP 模式时,项目的认证拦截器会先截住请求,这一步在 Postman 里是无解的:

要绕过认证,传统做法是先登录拿 Token 再配到请求头里,一个下午就这么耗掉了。Cool Request 的解法是把请求方式从 http 切到 reflex(反射),直接"绕到后厨"——它不走网络层,而是在运行中的 JVM 里通过 Spring 容器拿到这个 Controller 的 Bean,再直接调用对应方法。拦截器匹配不到这次调用,认证自然被跳过:

同样的接口,reflex 模式下直接返回了hello。这里有个细节:反射拿到的对象可能是被 CGLIB 代理过的,插件允许你切换成原始对象,代价是部分 AOP 逻辑会失效。想看原理的话,扫描与解析的代码在src/main/java/com/cool/request/scan/,大致是"扫描注解 → 收集 Bean → 反射执行"三步。

14:00 参数不用一个个手敲了

下午的新接口参数很复杂:一个@RequestBody里套了三层对象,还有@RequestParam@PathVariable混着来。以前这种接口光是构造 JSON 就够写半屏。

Cool Request 会基于 Spring MVC 的注解做参数推测:识别@RequestParam@RequestBody,按参数类型自动生成测试数据,嵌套对象也会逐层填好,表单、JSON、XML 几种格式可以随意切换。想快速定位某个接口,用它的搜索框就行(默认快捷键Ctrl+Shift+S):

16:00 凌晨两点的定时任务,被提前叫醒了

阿远要验证一个@Scheduled定时任务,cron 表达式是凌晨两点执行。等它自己跑?明天见。

Cool Request 会把项目里的定时任务也收集起来,选中后随时手动触发,不用干等。如果用的是 XXL-Job,还能在 Script 标签页写一段beforeCall,注入任务上下文:

public void beforeCall(ApplicationContext applicationContext, Method method, Map<Parameter, Object> parameterValueMap) { XxlJobContext x = new XxlJobContext(1L, "{\"storeNo\": \"1\"}", null, 0, 0); XxlJobContext.setXxlJobContext(x); }

白话解释:这相当于在调用前先给调度框架准备好"任务上下文",让定时任务以为自己是正常被触发的。脚本用的是插件内置的 Java 执行环境,相关代码在src/main/java/com/cool/request/components/http/script/

17:30 下班前,把接口文档一次性交给前端

联调基本跑通,阿远还差一件事:给前端同事一份接口文档。以前靠手写,或者到处截图。

Cool Request 支持右键一键导出 OpenAPI 格式,也可以直接导入 Apifox/Apipost,还能把任意请求复制成 curl 命令发给同事排错:

怎么开始用:从装进 IDEA 到第一次 Send

阿远这一天的结论是:Cool Request 没做什么惊天动地的事,它只是把"找接口、发请求、传参、看结果、出文档"这几件高频小事,从三个软件合并成了一个面板。开发时用反射模式快速验证逻辑,联调时切回 HTTP 模式走完整链路,这是它最舒服的用法。

想自己试试,两种方式:

  • 直接在 IDEA 的Settings → Plugins搜索 Cool Request 安装;
  • 或者把源码拉下来自己构建:git clone https://gitcode.com/gh_mirrors/co/cool-request,然后执行./gradlew buildPlugin,构建产物在build/distributions/目录下,再从磁盘安装即可。

构建和调试的详细说明在项目里的doc/DEVELOPER_GUIDE.md。对了,第二天阿远把另外两个窗口都关掉了,键盘上最常用的快捷键,他还是留给了自己——因为 Cool Request 只占 IDEA 里的一个角落,不再占他的一天。

【免费下载链接】cool-requestIDEA API、Java Method debug tools项目地址: https://gitcode.com/gh_mirrors/co/cool-request

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表