# PostEasy > 跨平台桌面应用,扫描 Java Spring Controller 源码,一键生成可交互的离线 HTML API 文档。 [English](README_EN.md) --- ## 📑 目录 - [中文介绍](#中文介绍) - [功能特性](#功能特性) - [安装使用](#安装使用) - [HTML 离线文档功能介绍](#html-离线文档功能介绍) - [接口说明与字段说明的取值逻辑](#接口说明与字段说明的取值逻辑) - [接口树 Controller 名称](#接口树-controller-名称) - [注意事项](#注意事项) - [开发指南](#开发指南) --- ## 📸 应用截图 | 首页 | 扫描页 | |------|--------| | ![首页](resources/images/首页.jpg) | ![扫描页](resources/images/扫描页.jpg) | | 导出页 | HTML 接口文档 | |--------|---------------| | ![导出页](resources/images/导出页.jpg) | ![HTML接口文档](resources/images/html接口文档.jpg) | --- # 中文介绍 ## 功能特性 ### 桌面端(Electron 应用) - **📁 项目扫描** — 选择 Java 项目根目录,自动识别多模块 Maven/Gradle 结构,扫描所有 `*Controller.java` 文件 - **🔍 AST 解析** — 基于 tree-sitter-java 进行源码级 AST 分析,**无需安装 JDK**,开箱即用 - **📊 扫描概览** — 展示 Controller 数量、接口总数、解析问题统计,支持导出错误日志 - **📄 文档导出** — 一键生成自包含的 HTML 接口文档,浏览器直接打开即可使用,无需任何本地服务 ### HTML 离线文档(生成后) - **🌐 在线请求调试** — 内置 HTTP 客户端,支持 GET / POST / PUT / DELETE / PATCH,可直接在文档中调用接口 - **📝 说明编辑** — 接口说明、请求参数说明、响应字段说明均支持**点击编辑**,编辑内容自动持久化到浏览器 localStorage - **💾 导出文档(含说明)** — 将编辑后的说明嵌入 HTML 文档,导出为新的独立文件,分发给团队即可看到你的补充说明 - **📋 自定义请求头** — 支持添加任意请求头(如 Authorization、X-Token 等),配合请求调试使用 - **🔢 环境切换** — 内置"本地开发 / 测试环境 / 生产环境"三套环境,支持自定义环境,Base URL 独立配置 - **📂 历史记录** — 自动保存最近 50 条请求历史,包含请求参数、请求头、响应状态,支持一键恢复 - **🔎 快速搜索** — 支持按路径/方法名搜索接口,`Ctrl+K` 快捷键聚焦搜索框 - **🎨 主题切换** — 浅色 / 深色 / 跟随系统三种主题模式 - **🌍 中英双语** — 界面支持中文/英文一键切换 - **🔄 请求体视图** — JSON 编辑器与表单字段双视图切换,支持双向同步 - **🪄 示例值填充** — 一键填入请求体字段的示例值(根据类型自动生成) - **📎 cURL 导出** — 每次请求自动生成 cURL 命令,支持一键复制 ### 解析支持范围 | 类别 | 支持内容 | |------|----------| | Java 版本 | Java 8 / 11 / 17 / 21+ | | Spring Boot | 2.x / 3.x / 4.x+ | | 注解命名空间 | `javax.*` 和 `jakarta.*` 自动适配 | | HTTP 注解 | `@GetMapping`、`@PostMapping`、`@PutMapping`、`@DeleteMapping`、`@PatchMapping`、`@RequestMapping` | | 参数注解 | `@RequestParam`、`@PathVariable`、`@RequestBody`、`@RequestHeader`、`@RequestPart`、`@CookieValue` 等 | | 校验注解 | `@NotNull`、`@NotBlank`、`@NotEmpty`、`@Size`、`@Min`、`@Max`、`@Pattern` 等 20+ 种 | | Swagger 注解 | `@Operation`、`@ApiOperation`、`@Tag`、`@Api`、`@Schema`、`@ApiModelProperty`、`@Parameter`、`@ApiParam` | | 响应体类型 | 普通对象、`R`/`Result`/`ResponseEntity` 包装类、`Mono`/`Flux` 响应式、`List`/`Page` 分页、文件下载 | | DTO 解析 | 自动解析项目内所有 `.java` 文件的字段,支持嵌套对象递归展开(最大深度 5 层),循环引用自动标记 | --- ## 安装使用 ### 下载安装 从 [GitHub Releases](https://github.com/tangjindi/PostEasy/releases) 页面下载对应平台的安装包: | 平台 | 文件 | |------|------| | macOS (Apple Silicon) | `PostEasy-1.0.0-mac-arm64.dmg` | | macOS (Intel) | `PostEasy-1.0.0-mac-x64.dmg` | | Windows | `PostEasy-Setup-1.0.0-win.exe` | > **Windows 用户注意**:安装时如遇 SmartScreen 提示,请点击"更多信息" → "仍要运行"。这是因为应用未使用代码签名证书。 ### 基本使用流程 1. **启动应用** — 打开 PostEasy 2. **选择项目** — 点击选择 Java Spring Boot 项目根目录(包含 `pom.xml` 或 `build.gradle` 的目录) 3. **开始扫描** — 点击"开始扫描",应用将自动发现所有 Controller 文件并解析接口 4. **导出文档** — 扫描完成后点击"导出 HTML 文档",选择保存路径 5. **打开文档** — 用浏览器打开生成的 HTML 文件即可查看和交互 ### 多模块项目 PostEasy 会自动检测 Maven/Gradle 多模块结构,扫描所有子模块的 `src/main/java` 目录。为确保完整解析所有 DTO 类和参数类型,请选择项目根目录(包含 `pom.xml` 或 `build.gradle` 的目录)。 --- ## HTML 离线文档功能介绍 生成的 HTML 文档是一个**完全自包含**的单文件应用,无需任何网络服务或本地服务器即可运行。 ### 左侧边栏 - **搜索框**:按路径或方法名快速过滤接口,`Ctrl+K` 快捷聚焦 - **环境选择器**:切换不同环境的 Base URL,支持自定义添加环境 - **接口树**:按 Controller 分组展示所有接口,支持全部展开/折叠、搜索过滤 - **底部按钮**:主题切换、中英语言切换、历史记录面板、导出文档(含说明) ### 右侧详情区 - **接口说明**:显示接口摘要,**点击即可编辑** - **请求参数表**:展示参数名、位置、类型、是否必填、说明、值。简单参数直接填值,复杂对象(`@RequestBody`)显示为字段树,**字段说明可点击编辑** - **Request Body**:支持【表单】和【JSON】双视图切换,表单视图可逐字段填写,JSON 视图可直接编辑 JSON,双向同步 - **自定义请求头**:可动态添加/删除任意请求头(如 `Authorization: Bearer xxx`) - **响应参数**:展示响应体字段树,**每个字段的说明均可点击编辑**,嵌套对象支持展开/折叠 - **发送请求**:填写参数后点击发送,展示请求详情、响应头、响应体、耗时、状态码,自动生成 cURL 命令 ### 导出文档(含说明) 这是 PostEasy 的核心特色功能: 1. 在 HTML 文档中编辑接口说明、参数说明、字段说明 2. 点击左下角 **💾 导出文档(含说明)** 按钮 3. 编辑内容会被嵌入到新生成的 HTML 文件中 4. 将新文件分享给团队成员——对方打开即可看到你补充的所有说明 > **原理**:导出时将 `state.edits` 数据通过 `