Magic-API 是一个基于 Java 的接口快速开发框架,支持通过 magic-script 脚本语言编写接口。magic-script 是一种基于 Mozilla Rhino 的脚本语言,语法类似 JavaScript,专为接口开发优化。
> 说明:本 Skill 同时兼容以下称呼方式:
> - magic-api / magicapi(框架名称)
> - magic-script / MagicScript / magicscript(脚本语言名称)
> 无论用户使用哪种称呼,都指代同一套技术栈。
示例1:快速查询接口
// GET /api/user/list 分页查询
return db.table('sys_user')
.column('id', 'userId')
.column('name', 'userName')
.where()
.eq('status', 1)
.page(page, size);
示例2:带参数的增删改查
// POST /api/user/save 新增用户
assert not_blank(body.name) : 400, '用户名不能为空';
var userId = db.table('sys_user')
.column('name', body.name)
.column('create_time', now())
.insert();
return {code: 200, data: {id: userId}};
示例3:调用外部接口
import http;
var result = http.connect('https://api.example.com/data')
.param({key: 'value'})
.header('Authorization', 'Bearer xxx')
.post()
.getBody();
return result;
| 文件 | 说明 |
|---|---|
| ------ | ------ |
references/keywords.md | 关键字、运算符、数据类型 |
references/script-syntax.md | 脚本语法详解 |
references/lambda-async.md | Lambda表达式与异步调用 |
| 文件 | 说明 |
|---|---|
| ------ | ------ |
references/aggregation.md | 聚合函数(count/sum/max/min/avg/group_concat) |
references/string-functions.md | 字符串函数(uuid/is_blank/not_blank) |
references/date-functions.md | 日期函数(date_format/now/current_timestamp_millis/current_timestamp) |
references/number-extensions.md | Number扩展与数学函数 |
references/collection-extensions.md | 列表与Map扩展 |
references/date-extensions.md | 日期扩展 |
references/array-functions.md | 数组创建函数 |
references/math-functions.md | 数学函数(round/floor/ceil/percent) |
references/other-functions.md | 其它函数(print/println/ifnull/is_null/not_null) |
references/object-extensions.md | Object扩展方法 |
references/class-extensions.md | Class扩展方法 |
references/pattern-extensions.md | Pattern扩展方法 |
| 文件 | 说明 |
|---|---|
| ------ | ------ |
references/db-query.md | 数据库查询(select/selectOne/selectInt/selectValue) |
references/db-update.md | 数据库增删改(insert/update/batchUpdate/call) |
references/db-transaction.md | 事务操作 |
references/db-cache.md | 缓存操作(cache/deleteCache) |
references/single-table.md | 单表操作(db.table链式API) |
references/sql-param.md | SQL参数(#{}、${}、动态SQL、Mybatis语法) |
references/page.md | 分页查询 |
| 文件 | 说明 |
|---|---|
| ------ | ------ |
references/http-module.md | HTTP模块调用外部接口 |
references/request-module.md | Request模块获取请求信息 |
references/response-module.md | Response模块设置响应 |
references/log-module.md | 日志模块 |
references/env-module.md | 环境配置模块 |
references/magic-module.md | Magic模块(调用其他接口) |
| 文件 | 说明 |
|---|---|
| ------ | ------ |
references/java-integration.md | 脚本调用Java |
references/api-integration.md | Java调用接口 |
| 文件 | 说明 |
|---|---|
| ------ | ------ |
references/quick-start.md | 快速入门(工程创建、三分钟写接口) |
references/quick-param.md | 请求参数获取 |
references/quick-crud.md | CRUD操作示例 |
references/linq.md | Lambda/LINQ操作示例 |
| 文件 | 说明 |
|---|---|
| ------ | ------ |
references/faq.md | 常见问题 |
references/validate.md | 参数校验 |
excludeValue = null,需用 if (excludeValue === undefined) 判断;不支持 new Set(),需用数组替代for 循环,需用 for (value in list) 或 for (index, value in list);注意 Collection 扩展提供了 reduce 方法用于归约操作each 而不是 forEach;获取长度用 size() 而不是 length;判断Map键用 containsKey() 而不是 hasOwnProperty()#{} 防注入占位符用于普通参数,${} 字符串拼接用于动态表名/列名/排序字段(存在注入风险)::type 语法用于类型转换,如 '123'::int,转换失败可指定默认值 'abc'::int(0)namenameheader.xxxbody.xxxpath.xxx 或直接使用变量名cookie.xxxsession.xxxin (#{ids}) 语法会自动对集合参数展开db.slave.select(...) 格式切换数据源db.cache("cacheName", ttl).select(...) 使用缓存db.transaction(()=>{...})var tx = db.transaction(); tx.commit(); tx.rollback();共 1 个版本