SuperAPI AI 工具集

crud-rest-controller

编程与开发

查看项目

更新于 10-15 08:58

技能介绍

用途

crud-rest-controller 是 Spring Agent Toolkit 中的一个技能,用于为某个实体生成一个 @RestController 类,提供标准的 CRUD 端点,底层基于 Spring Data 仓库。它支持可选的 DTO 映射、分页、过滤以及 PATCH 更新。

前置条件

该技能依赖 Spring MCP 服务器(由 Amplicode IntelliJ 插件提供)。使用前需检查工具列表中是否存在 Amplicode 的 MCP 工具,它们暴露在 amplicode MCP 服务器下(例如 get_project_summary、list_module_dependencies、get_entity_details);将 MCP 工具扁平化到工具列表的执行环境会使用 mcp__amplicode__ 前缀。

  • 若至少有一个 Amplicode 工具可用,说明 MCP 已连接,可继续使用本技能。
  • 若没有可用工具,则需停止并调用 amplicode-install 技能(随 Spring Agent Toolkit 捆绑)。该技能会安装 Amplicode 插件,并引导用户完成欢迎界面的「Настроить Spring Agent」按钮操作及 MCP 客户端重启。完成后 MCP 工具即可用,再继续本技能。
  • 若技能列表中未注册 amplicode-install,需告知用户:本技能需要 Amplicode IntelliJ 插件及其 MCP 服务器,请从 https://amplicode.ru/marketplace 安装到 IntelliJ IDEA Ultimate/Community 或 GigaIDE,打开任意项目,在 Amplicode 欢迎界面点击「Настроить Spring Agent」,然后重启 MCP 客户端。

主要能力

  • 生成带标准 CRUD 端点的 @RestController 类。
  • 使用 Spring Data 仓库作为数据访问层。
  • 可选 DTO 映射:若实体没有现成 DTO,可委托给 dto-creator 创建;用户也可选择直接使用实体。
  • 分页支持:默认启用,分页类型可选 PAGE 或 WINDOW(WINDOW 需选择过滤,可避免 count 查询开销)。
  • 过滤支持:可为 GET_LIST 添加 JPA Specification 过滤。
  • PATCH 支持:patchStrategy 自动检测为 ObjectMapper。
  • 自动检测项目语言(Java/Kotlin)、Spring Boot 版本、Jackson 版本等。

使用方式

技能遵循「上下文优先,再询问」的决策原则:

  1. 先读取对话上下文,提取用户已明确或隐含提供的输入(实体、仓库、DTO 模式、控制器名称、路径、分页、过滤、方法等),已提供的跳过对应问题。
  2. 收集最小项目上下文:调用 get_project_summary 获取语言、bootMajor、moduleName、buildFile、mainPackage;调用 list_module_dependencies 获取依赖;调用 list_project_endpoints 检测路径冲突与现有命名约定。
  3. 选择实体:若用户已提及则直接使用;否则调用 list_all_domain_entities 并询问。之后调用 get_entity_details 获取 ID 类型、变量名、复数名、是否有校验注解等。
  4. 选择仓库:调用 list_entity_repositories;若只有一个则静默选择,若用户指定则直接使用,若有多个则询问,若无则提示用户手动创建或使用其他技能。
  5. DTO 与自定义:若用户已说明 DTO 模式则跳过;否则询问。若选择 DTO,调用 list_entity_dtos 和 list_entity_mappers,选择现有 DTO 与映射器,或委托 dto-creator / mapper-creator 创建。
  6. 路径、分页与过滤设置:通常有良好默认值,可用一行确认让用户覆盖。

默认值包括:controllerName 为 {EntityName}Controller,controllerPackage 与现有控制器一致或使用 mainPackage,basePath 为 /rest,resourcePath 为 /{pluralizedEntityName},pagination 为 true,paginationType 为 PAGE,filter 为 None。

适用场景

适用于在 Spring 项目中快速为实体生成 CRUD REST 控制器,尤其是需要遵循项目现有命名约定、路径约定和分页风格时。也适用于需要 DTO 映射、分页、过滤或 PATCH 更新的场景。

限制

  • 必须依赖 Amplicode IntelliJ 插件及其 MCP 服务器,否则无法使用。
  • 代码只能来自 examples/ 文件;若无匹配示例,需停止并询问用户。
  • 对于有固定选项的问题,优先使用 AskUserQuestion 或类似交互工具,纯文本编号列表是最后手段。
  • 多模块项目需先询问使用哪个模块。
  • CREATE 和 PATCH 操作要求映射器具有 toEntity 和 updateWithNull 方法。
  • 若实体没有仓库,需用户手动创建或使用其他技能。
  • 分页类型 WINDOW 需要选择过滤。
  • 部分选项(如 Jackson 版本、PagedModel 可用性)依赖项目依赖与 Spring Boot 版本自动检测。