编写接口文档看似简单,实则需要细致入微的规划。手动录入路径、参数、响应体不仅耗费时间,还极易遗漏各种约束条件——例如字段长度、格式校验、是否必填等。CodeBuddy 提供了三种文档生成方式,覆盖从零开始无注释、代码已含注释、以及直接扫描整个 Controller 代码等不同场景。下文将逐一详细解析。
利用自然语言指令即时生成 Markdown 格式的 API 文档
这是最直接高效的方式,特别适用于尚未编写注释、或者需求刚确定便需要输出文档的情况。你只需用一句话描述接口要求,CodeBuddy 就能自动补全路径、HTTP 方法、请求体结构、状态码以及示例数据。
具体操作步骤:在 CodeBuddy CLI 交互模式下输入“生成用户登录接口文档:POST /api/v1/auth/login,请求体含 email(字符串,必须为有效邮箱格式)、password(字符串,长度6-20位),返回200成功响应{“token”: “string”, “expiresIn”: 3600},401返回{“error”: “invalid_credentials”}”。然后等待 AI 输出完整的 Markdown 内容,内容包括标题、请求 URL、请求方法、请求头说明、参数表格、状态码列表以及两个 JSON 示例代码块。将生成的内容复制粘贴到项目根目录下的 docs/api-login.md 文件中即可。
基于 JSDoc 注释自动生成 OpenAPI 3.0 YAML 格式文档
对于 Node.js/Express 项目,如果代码中已经包含了带 @openapi 标签的 JSDoc 注释,那么可以采用第二种方式。CodeBuddy 能够解析这些注释并自动补充 OpenAPI 必需的字段,避免手写 YAML 时遗漏 components 或 securityDefinitions 等关键配置。
有两种途径可供选择:
方式一:通过 CLI 命令导出
首先确保每个路由函数上方都存在类似以下格式的注释块:
/**
* @openapi
* /api/v1/orders:
* post:
* summary: 创建订单
* requestBody:
* required: true
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/CreateOrderRequest'
*/
然后在项目根目录执行命令:codebuddy doc generate --format openapi3 --output openapi.yaml。生成后务必检查 openapi.yaml 文件中是否确实包含了 components.schemas.CreateOrderRequest 的定义——如果该定义缺失,说明对应的 @openapi 块未被正确识别,通常是由于注释缩进或空行不符合 swagger-jsdoc 规范所致。
方式二:在 IDE 内右键触发导出
在 VS Code 中打开含有注释的文件(例如 routes/order.js),选中整个 @openapi 注释块,右键选择「CodeBuddy → Export as OpenAPI」,然后选择 YAML 格式导出即可。省去了手动输入命令的步骤,操作更便捷。
引用现有 Controller 类批量生成结构化文档
此功能是 Spring Boot 项目的专属优势。无需逐行编写注释,CodeBuddy 通过静态分析直接提取 @RequestMapping、@RequestParam、@RequestBody 等注解信息,并能够关联 DTO 的类型定义。
操作分为四个步骤:
第一步,确认 Controller 类位于 src/main/ja va/com/example/demo/controller/ 目录下,并且项目已启用 @ComponentScan 或 @SpringBootApplication 来扫描该包路径。这是前提条件,路径错误将导致无法正确识别。
第二步,在 CodeBuddy IDE 中点击顶部菜单栏「Tools」→「Generate API Docs from Controllers」,在弹出的对话框中输入:/generate-api-doc from OrderController, UserController。
第三步,系统自动填充基础路径和参数名称后,你需要在右侧面板中手动补充每个 @RequestParam 字段的“是否必填”以及“业务含义”。例如对于 page 字段,填写“不必填”和“分页页码,从1开始,默认为1”。这一步至关重要,直接决定文档的可用性和准确性。
第四步,点击「Export as Markdown」,将文件保存为 docs/api-reference.md。打开生成的文件进行检查,确保每个接口都包含「请求示例」和「响应样例」区块,且字段类型与实际代码一致。至此,完整的接口文档便生成完毕。
