提升后端开发效率:手写一款 IntelliJ REST 插件 HttpMate

IntelliJ 插件开发实战与 Kotlin 优势

Posted by JerAxxxxxxx on January 15, 2026
2 min read

在日常的后端开发工作中,我们经常面临两个痛点:一是在庞大的代码库中快速定位某个 API 的定义位置,二是为这些 API 编写繁琐的接口文档。为了解决这些问题,我开发了一款名为 HttpMate 的 IntelliJ IDEA 插件。

今天这篇博客,我想分享一下 HttpMate 的功能特性,以及使用 Kotlin 开发 IntelliJ 插件的一些心得体会。

🚀 HttpMate 能做什么?

HttpMate 旨在成为后端开发者的好帮手,主要包含以下核心功能:

1. ⚡️ 极速 API 搜索

你是否还在用全局搜索 (Ctrl+Shift+F) 来查找 @RequestMapping("/users")? HttpMate 提供了一个专门的 REST API 搜索窗口。

  • 快捷键Ctrl + \ (或 Ctrl + Alt + H)
  • 功能:输入路径关键词(如 user list),即可列出所有匹配的 API(支持 Spring Boot 和 JAX-RS)。
  • 操作:回车即跳转代码定义处,支持模糊搜索。

2. 📝 零配置文档生成

写文档是最枯燥的环节。HttpMate 可以通过右键菜单一键生成 Markdown 文档。

  • 智能解析:自动提取 @GetMapping 等注解信息。
  • 参数详情:不仅仅是解析参数名,还能识别 @Size, @Min, @NotNull 等验证注解,并在文档中列出约束条件。
  • 嵌套对象:如果参数是复杂对象,插件会递归解析并生成嵌套类型的表格,最大支持 3 层深度,完美展示数据结构。

3. 🧩 Mock 数据自动生成

在调试接口时,手动构造复杂的 JSON 请求体非常耗时。 HttpMate 内置了 Mock 引擎,能根据 Java/Kotlin 类的结构自动生成带有模拟数据的 JSON。

  • 支持 String, Number, Boolean, Date 等基础类型。
  • 支持 List, Set, Map 等集合类型。
  • 数据随机化,让 Mock 数据更真实。

🛠 IntelliJ 插件开发:PSI 的魔法

开发 IntelliJ 插件的核心在于理解 PSI (Program Structure Interface)

PSI 是 IntelliJ 平台对代码的语义表示。与简单的文本处理不同,PSI 将代码解析成了一棵树(类似 AST)。

扫描 API 的原理

以 HttpMate 的 API 扫描功能为例,它是如何找到所有 Controller 的呢?

  1. Scope(作用域):首先定义搜索范围 GlobalSearchScope.projectScope(project)
  2. AnnotatedElementsSearch:利用 PSI 提供的搜索工具,查找所有标记了 @Controller@RestController 的类。
  3. 遍历解析:遍历类中的 PsiMethod,检查是否有 @RequestMapping 等注解。
  4. 属性提取:通过 annotation.findAttributeValue("value") 精确获取路径信息,而不需要写复杂的正则表达式去匹配文本。
// 伪代码示例
val mappingAnnotations = listOf("org.springframework.web.bind.annotation.GetMapping", ...)
for (annotationName in mappingAnnotations) {
    val methods = AnnotatedElementsSearch.searchPsiMethods(annotationClass, scope)
    for (method in methods) {
        // 解析路径和方法...
    }
}

💎 为什么选择 Kotlin 开发插件?

IntelliJ IDEA 本身就是 JetBrains 出品的,而 Kotlin 也是他们的亲儿子。使用 Kotlin 开发 IntelliJ 插件有天然的优势:

1. 简洁的语法

插件开发中需要处理大量的 PSI 对象转换和空值判断。

  • Java: 需要层层 if (obj != null) { ... }
  • Kotlin: 安全调用 ?. 和 Elvis 操作符 ?: 让代码瞬间清爽。

2. 强大的集合操作

在扫描 API 时,我们经常需要对列表进行过滤、映射、去重。Kotlin 的标准库函数(filter, map, groupBy)让数据处理逻辑一目了然。

// 清晰的流式处理
psiClass.allMethods
    .filter { !it.hasModifierProperty(PsiModifier.STATIC) }
    .map { docGenerator.generate(it) }
    .forEach { sb.append(it) }

3. UI DSL

IntelliJ 平台最近推出了 Kotlin UI DSL,让构建设置页面或对话框变得像写 HTML 一样简单描述性,告别了 Swing 繁琐的布局管理器。

4. 官方推荐

目前 IntelliJ 平台的官方文档和示例代码正全面转向 Kotlin。使用 Kotlin 能更容易看懂源码,复用社区资源。


🎯 总结

HttpMate 从最初解决我个人痛点的一个小脚本,慢慢演变成了一个功能完善的插件。通过这次开发经历,我深刻体会到了 IntelliJ 平台强大的扩展能力。

如果你也有想要自动化的重复性工作,不妨尝试写一个插件,Kotlin 绝对是你的最佳拍档!

项目 GitHub 地址: HttpMate (示例链接)


知识共享许可协议
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。