Yao 提供一组数据原子操作、网络请求、流程控制等一系列的处理器。这些处理器可以在命令行、Widget、Script、云函数和 Studio 脚本中使用。
处理器支持自定义,可以通过编写 Flow、Script、 GRPC 插件或自定义 Widget 方式扩展。
约定
/data/app
, 实际编写时需替换为应用根目录。http://127.0.0.1:5099
, 实际编写时需自行替换。http://127.0.0.1:5077
, 实际编写时需自行替换。<>
标识自行替换的内容。 例如: icon-<图标名称>
, 实际编写时应替换为: icon-foo
, icon-bar
...处理器由名称、参数表和返回值构成。可以理解为是一个功能函数 ProcessName( ...args:Any[] ) Any
,
名称: <命名空间>.<名称>
参数表: [...Args]
返回值: Any
处理器清单:
处理器 | 说明 |
---|---|
models.* | 数据模型原子操作 查看文档 |
schemas.* | 数据表结构操作 查看文档 |
stores.* | 数据存储 查看文档 |
fs.* | 文件系统 查看文档 |
http.* | HTTP 请求 查看文档 |
session.* | 会话数据 查看文档 |
encoding.* | 编码解码 查看文档 |
crypto.* | 加密解密 查看文档 |
ssl.* | 签名校验 查看文档 |
utils.* | 一组实用程序 查看文档 |
flows.* | 使用 Flow 编写的处理器 查看文档 |
scripts.* | 使用 Script 脚本编写的处理器 查看文档 |
plugins.* | 使用 GRPC 插件编写处理器 查看文档 |
widgets.* | 自定义 Widget 导出的的处理器 查看文档 |
内建 Widgets 的处理器:
Widget | 处理器 | 说明 |
---|---|---|
App | yao.app.* | App Widget 处理器 查看文档 |
Login | yao.login.* | Login Widget 处理器 查看文档 |
Table | yao.table.* | Table Widget 处理器 查看文档 |
Form | yao.form.* | Form Widget 处理器 查看文档 |
Chart | yao.chart.* | Chart Widget 处理器 查看文档 |
Import | imports.* | Import Widget 数据导入处理器 查看文档 |
Task | tasks.* | Task Widget 并发任务处理器 查看文档 |
Schedule | schedules.* | Schedule Widget 异步任务处理器 查看文档 |
可以使用 run
命令,运行处理器 yao run <process> [args...]
。
yao run models.product.Paginate '::{}' 1 2
可在 YAO DSL (API, Flow, Table, Chart 等) 中使用处理器, 可参考对应 Widget 手册。
在 API DSL 中使用
{// ..."paths": [{"path": "/search","method": "GET","process": "models.product.Paginate","in": [":query-param", "$query.page", "$quey.pagesize"], // 参数表"out": { "status": 200, "type": "application/json" }}]// ...}
在 Flow DSL 中使用
{// ..."nodes": [{"name": "宠物","process": "models.product.Find","args": [1, { "select": ["id", "name"] }]},{"name": "打印","process": "utils.fmt.Print","args": ["{{$res.宠物}}"]}]// ...}
在 Table DSL 中使用
{// ..."action": {"bind": { "table": "product" },"search": {"guard": "-","process": "scripts.product.Search","default": [null, 1, 2]},"save": {"guard": "bearer-jwt,scripts.product.Guard"},"after:search": "scripts.hook.BeforeSearch","after:search": "scripts.hook.AfterSearch"}// ...}
可以在 Script, 云函数, Stuido 脚本中,使用 Process(name, ...args)
函数,调用处理器
在 Script 中使用
/data/app/scripts/demo.js
function GetProduct(id) {return Process("models.product.Find", id, { select: ["id", "name"] });}
运行调试
yao run scripts.demo.GetProduct 1
在云函数中使用
/data/app/services/demo.js
function GetProduct(id) {return Process("models.product.Find", id, { select: ["id", "name"] });}
运行调试
yao run utils.jwt.Make 1 '::{"id":1, "name":"Admin"}' '::{"issuer":"yao"}'
curl -X POST http://127.0.0.1:5099/api/__yao/app/service/demo \-H 'Content-Type: application/json' \-H 'Authorization: Bearer <JWT>' \-d '{ "method":"GetProduct", "args":[1]}'
在 Studio 中使用
/data/app/studio/demo.js
function GetProduct(id) {return Process("models.product.Find", id, { select: ["id", "name"] });}
运行调试
yao studio run demo.GetProduct 1
# Studio JWT 可以通过管理后台, 管理员登录接口获取curl -X POST http://127.0.0.1:5077/service/demo \-H 'Content-Type: application/json' \-H 'Authorization: Bearer <Studio JWT>' \-d '{ "method":"GetProduct", "args":[1]}'
附: 如何获取 Studio Token
Yao 提供一组数据原子操作、网络请求、流程控制等一系列的处理器。这些处理器可以在命令行、Widget、Script、云函数和 Studio 脚本中使用。
处理器支持自定义,可以通过编写 Flow、Script、 GRPC 插件或自定义 Widget 方式扩展。
约定
/data/app
, 实际编写时需替换为应用根目录。http://127.0.0.1:5099
, 实际编写时需自行替换。http://127.0.0.1:5077
, 实际编写时需自行替换。<>
标识自行替换的内容。 例如: icon-<图标名称>
, 实际编写时应替换为: icon-foo
, icon-bar
...处理器由名称、参数表和返回值构成。可以理解为是一个功能函数 ProcessName( ...args:Any[] ) Any
,
名称: <命名空间>.<名称>
参数表: [...Args]
返回值: Any
处理器清单:
处理器 | 说明 |
---|---|
models.* | 数据模型原子操作 查看文档 |
schemas.* | 数据表结构操作 查看文档 |
stores.* | 数据存储 查看文档 |
fs.* | 文件系统 查看文档 |
http.* | HTTP 请求 查看文档 |
session.* | 会话数据 查看文档 |
encoding.* | 编码解码 查看文档 |
crypto.* | 加密解密 查看文档 |
ssl.* | 签名校验 查看文档 |
utils.* | 一组实用程序 查看文档 |
flows.* | 使用 Flow 编写的处理器 查看文档 |
scripts.* | 使用 Script 脚本编写的处理器 查看文档 |
plugins.* | 使用 GRPC 插件编写处理器 查看文档 |
widgets.* | 自定义 Widget 导出的的处理器 查看文档 |
内建 Widgets 的处理器:
Widget | 处理器 | 说明 |
---|---|---|
App | yao.app.* | App Widget 处理器 查看文档 |
Login | yao.login.* | Login Widget 处理器 查看文档 |
Table | yao.table.* | Table Widget 处理器 查看文档 |
Form | yao.form.* | Form Widget 处理器 查看文档 |
Chart | yao.chart.* | Chart Widget 处理器 查看文档 |
Import | imports.* | Import Widget 数据导入处理器 查看文档 |
Task | tasks.* | Task Widget 并发任务处理器 查看文档 |
Schedule | schedules.* | Schedule Widget 异步任务处理器 查看文档 |
可以使用 run
命令,运行处理器 yao run <process> [args...]
。
yao run models.product.Paginate '::{}' 1 2
可在 YAO DSL (API, Flow, Table, Chart 等) 中使用处理器, 可参考对应 Widget 手册。
在 API DSL 中使用
{// ..."paths": [{"path": "/search","method": "GET","process": "models.product.Paginate","in": [":query-param", "$query.page", "$quey.pagesize"], // 参数表"out": { "status": 200, "type": "application/json" }}]// ...}
在 Flow DSL 中使用
{// ..."nodes": [{"name": "宠物","process": "models.product.Find","args": [1, { "select": ["id", "name"] }]},{"name": "打印","process": "utils.fmt.Print","args": ["{{$res.宠物}}"]}]// ...}
在 Table DSL 中使用
{// ..."action": {"bind": { "table": "product" },"search": {"guard": "-","process": "scripts.product.Search","default": [null, 1, 2]},"save": {"guard": "bearer-jwt,scripts.product.Guard"},"after:search": "scripts.hook.BeforeSearch","after:search": "scripts.hook.AfterSearch"}// ...}
可以在 Script, 云函数, Stuido 脚本中,使用 Process(name, ...args)
函数,调用处理器
在 Script 中使用
/data/app/scripts/demo.js
function GetProduct(id) {return Process("models.product.Find", id, { select: ["id", "name"] });}
运行调试
yao run scripts.demo.GetProduct 1
在云函数中使用
/data/app/services/demo.js
function GetProduct(id) {return Process("models.product.Find", id, { select: ["id", "name"] });}
运行调试
yao run utils.jwt.Make 1 '::{"id":1, "name":"Admin"}' '::{"issuer":"yao"}'
curl -X POST http://127.0.0.1:5099/api/__yao/app/service/demo \-H 'Content-Type: application/json' \-H 'Authorization: Bearer <JWT>' \-d '{ "method":"GetProduct", "args":[1]}'
在 Studio 中使用
/data/app/studio/demo.js
function GetProduct(id) {return Process("models.product.Find", id, { select: ["id", "name"] });}
运行调试
yao studio run demo.GetProduct 1
# Studio JWT 可以通过管理后台, 管理员登录接口获取curl -X POST http://127.0.0.1:5077/service/demo \-H 'Content-Type: application/json' \-H 'Authorization: Bearer <Studio JWT>' \-d '{ "method":"GetProduct", "args":[1]}'
附: 如何获取 Studio Token