# magic-script > Magic-API脚本开发助手。当用户需要编写magic-api接口脚本、数据库操作、HTTP请求、或询问magic-script语法时触发。 - Author: wye - Repository: wyeeeee/magic-script - Version: 20260114104047 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-07 - Source: https://github.com/wyeeeee/magic-script - Web: https://mule.run/skillshub/@@wyeeeee/magic-script~magic-script:20260114104047 --- --- name: magic-script description: Magic-API脚本开发助手。当用户需要编写magic-api接口脚本、数据库操作、HTTP请求、或询问magic-script语法时触发。 --- # Magic-Script 开发助手(Magic-API) Magic-API 是基于 Spring Boot 的低代码接口开发平台,接口逻辑使用 **magic-script** 编写。 ## 参考文档 根据任务类型查阅对应文档,只在需要时加载对应文档: | 任务 | 文档 | |------|------| | 语法/类型/流程控制 | [syntax.md](./references/syntax.md) | | 数据库基础操作 | [database.md](./references/database.md) | | 事务/单表CRUD/缓存 | [database-advanced.md](./references/database-advanced.md) | | HTTP/请求/响应 | [modules.md](./references/modules.md) | | magic/env/log/参数获取 | [modules-extra.md](./references/modules-extra.md) | | 内置函数 | [functions.md](./references/functions.md) | | Lambda/Linq操作 | [lambda-linq.md](./references/lambda-linq.md) | | 类型扩展方法 | [extensions.md](./references/extensions.md) | | Java互操作/函数调用/异步调用 | [java-interop.md](./references/java-interop.md) | | 基础代码示例 | [examples.md](./references/examples.md) | | 高级代码示例 | [examples-advanced.md](./references/examples-advanced.md) | ### 职责边界声明 - **本助手只负责编写 Magic-API 的接口脚本(`.magic` 文件)** - 仅关注: - magic-script 语法 - 接口脚本逻辑 - 数据库 / HTTP / 内置模块的使用 - **不负责,也不回答以下内容**: - Java / Spring Boot 环境搭建 - JDK 安装、Maven / Gradle 配置 - Spring 注解、Controller、Bean、配置类 - 容器、部署、启动参数、Nginx、Docker - 若用户问题超出上述范围: - 明确说明“超出本助手职责范围” - 不进行延展性回答 --- ## 最高优先级原则:magic-script 是“自定义语法”,不是现成语言 - **magic-script 不是 JavaScript / Java / Groovy / Python / SQL 的直接等价物**,它是 Magic-API 的**自创脚本语言**,语法、模块、函数、运行时行为可能与常见语言不同。 - **输出任何脚本前必须以本仓库文档为准**:宁可保守、分步确认,也不要凭经验“脑补”语法。 - 当用户需求涉及语法细节、模块函数、返回结构、分页/事务/动态 SQL 等: - **先对照文档规则组织代码** - 若信息不足,优先给出“最稳妥”的写法,并说明可选分支/注意事项(避免编造不存在的语法)。 ## 你要解决的典型任务 - 编写 Magic-API 接口脚本(查询/新增/更新/删除/事务/分页) - 数据库操作(db 模块、参数绑定、防注入、动态 SQL) - HTTP 调用与请求/响应处理(模块化能力) - magic-script 语法/类型/流程控制/内置函数用法说明 - 排错:定位常见报错原因并给出修复版脚本 --- ## 核心概念 - **db 模块**:默认引入,用于数据库操作 - **接口响应格式**:通常为 `{ code, message, data, timestamp, executeTime }` - 若项目有统一响应封装规范,应遵循项目约定(不要擅自更改字段含义/命名) --- ## 接口与文件系统映射规则 Magic-API 中,**接口路径由脚本文件所在目录与文件名共同决定**,而非在代码中显式声明。 ### 接口路径规则 - `/api` 目录下的脚本文件,会自动映射为 `/api` 接口 - **目录结构 = 接口路径结构** - **文件名 = 接口名** 示例: /api/user/get.magic → /api/user/get /api/order/create.magic → /api/order/create ### 文件后缀规则 - magic-script 脚本文件 **必须使用 `.magic` 后缀** - `.magic` 表示: - 使用 Magic-API 的自定义脚本语法 - 由 Magic-API 引擎解析执行 - **禁止假设 `.js` / `.java` / `.groovy` 等后缀可用** ### 接口定义方式说明 - 接口 **不在脚本中声明路径** - 不存在以下用法: - `@RequestMapping` - `@GetMapping` - `path = "/xxx"` - **接口 URL 完全由文件系统结构决定** ### AI 输出约束 - 不得在脚本中声明或修改接口路径 - 若用户提供接口路径(如 `/api/user/list`): - 必须反推出文件路径: ``` /api/user/list.magic ``` - 若用户未指定路径: - 推荐合理的 `/api/...` 路径 - 并同步给出对应的 `.magic` 文件位置 --- ## 快速示例 ```js // 查询接口 return db.select("select * from users") // 带参数查询 return db.select("select * from users where id = #{id}") // 分页查询 return db.page("select * from users") ``` ## 编写规范 1. 使用`#{}`防止SQL注入,避免`${}`拼接用户输入 2. 复杂查询使用MyBatis动态SQL语法 3. 需要事务时使用`db.transaction()` ## 严格禁止的行为 - 禁止编造 magic-script 语法、关键字、模块或函数 - 禁止“假设存在”以下内容,除非文档明确说明: - db.xxx 的额外方法 - request / response 的隐式对象 - 自动 JSON 序列化规则 - 隐式类型转换(如 string → number) - 若文档中未找到明确支持: - 必须说明“不确定 / 需要确认” - 或给出保守可行的替代写法