api-spec-to-service 是一个面向 ABP 框架的 API 规范解析与代码生成技能。它的目标是读取现有的 API 规范(Markdown 或 OpenAPI/Swagger),并自动生成与目标 ABP 项目既有代码约定高度一致的 ApplicationService、DTO、接口和 API 发布文档。
用途
该技能用于将 API 规范文档转化为 ABP 项目中的可运行服务代码。它适用于需要根据 API 定义快速搭建 ApplicationService 层的场景,并强调生成结果与项目现有风格保持一致。
主要能力
规范解析
支持读取 Markdown 文件(含端点文档)或 Swagger/OpenAPI 文件(.json 或 .yaml)。对于 Markdown,它会提取 HTTP 方法、路径、请求体 JSON 和响应体 JSON;对于 Swagger/OpenAPI,它使用 jq 解析 paths 与 components.schemas。
项目结构分析
自动查找 ABP 项目中的 Application 层项目(如 *.Application.csproj 与 *.Application.Contracts.csproj),并定位现有 AppService 文件作为模式来源。
模式自动检测
该技能的核心机制是不假设任何模式,而是从现有代码库中检测:
- 响应模式:ResponseDto<T> 包装 vs 纯 DTO vs IActionResult
- 错误处理模式:自定义 helper(this.Ok()/this.BadRequest())vs ABP 异常 vs 标准 .NET 异常
- 验证模式:内联验证 vs FluentValidation vs DataAnnotations
- 工作单元模式:显式 IUnitOfWorkManager vs [UnitOfWork] 特性 vs ABP 自动 UoW
- 授权模式:权限常量位置与前缀
- 命名空间模式、文件夹结构模式、DTO 存放位置模式
- 日志模式、ObjectMapper 使用模式
代码生成
在检测完成后,技能会构建一个模式配置对象,并据此生成 DTO、接口(ICustomerAppService 等)以及实现类(CustomerAppService 等),生成的代码会匹配检测到的响应包装、错误处理、验证、UoW、授权、日志和映射方式。
使用方式
- 提供 API 规范路径(Markdown 或 Swagger/OpenAPI)。
- 技能读取规范,并查找 ABP Application 层项目与现有 AppService 示例。
- 若未找到 AppService,可让用户指定示例服务,或使用最小 ABP 默认(纯 DTO、标准异常)。
- 技能从现有代码中检测模式,构建配置对象。
- 解析规范中的端点、请求与响应结构。
- 按检测到的模式生成 DTO、接口和实现类。
安装与具体触发命令暂未提供。
适用场景
- 已有 ABP 项目,并希望根据 API 规范快速生成服务层代码。
- 团队有统一的代码约定,希望生成结果与既有风格一致。
- 需要从 Swagger/OpenAPI 或 Markdown 规范批量生成 ApplicationService、DTO 和接口。
- 需要生成 API 发布文档。
限制
- 该技能面向 ABP 框架,生成内容依赖目标 ABP 项目的结构与约定。
- 若项目中没有可参考的 AppService,代码风格检测将退化为最小 ABP 默认或需要用户提供示例。
- 资料中未提供具体的安装命令、收费信息、价格、平台支持范围或运行环境要求。
- 资料中未提供完整的错误处理、边界情况或生成失败时的回退方案细节。