DevPort用于指定前后台的在开发模式下的绑定端口
例如这里是4000
那么前端request导出的base-host = "localhost:4000"
后端应用服务器也会listen4000
Api代表具体的接口和接口的实现
由于是面向中小型应用的 故只有两个子路由 分别是 Auth / Unauth ( /api/auth/, /api/unauth )
默认实现时 auth会获取token中的userID 并绑定到后续的controller中
unauth则不需要获取token中的userID 用于无需鉴权的场景
Auth/Unauth下的子条目代表的是具体的接口实现
Params是访问该接口需要携带的参数
Response则是该接口会返回的reponse-body
Program中可以定义这些接口需要进行的操作
在接口实现本身不复杂的情况下
可以把所有的实现都写在这里
如果实现较复杂 可以在Program中写一些这里被简化好的数据库查询语法糖
在此基础上完善你的代码
当然,Program不是必须要写的字段,如果你不喜欢这套语法,可以自己在生成项目的controller中实现 ( response, param也同样不是必须字段 但是提前声明这些可以最大限度的发挥前后端一体的生成效果 )
具体的Program语法是这样的:
每个数组元素都可以被视作一行/多行ts或一行单独的<mid>语句
包含几个预设变量
$Return代表该接口的response 给它赋值即可以声明产生的reponse-body
$Params 代表传给该接口的params
$UserID 代表在auth接口中被从token中解析出的userID
$变量在ts/<mid>语句中都可以被使用
但是在ts中 $变量等同于去除了开头的$符号的变量
如$user, 在ts中代表的就是一个名叫user的变量
在<mid>语句中 声明或使用都得带上$
$user => &User.FindOne|userID=$Params.userID
这代表 新产生了一个名叫$user的变量
使用形如 $<var> => <赋值语句>的方式声明变量
{
"DevPort": 4000,
"Api": {
"Auth": {
"Login": {
"Params": "{userID: string, pwd: string}",
"Response": "{done: boolean}",
"Program": [
"# $user => &User.FindOne|userID=$Params.userID ",
" $Return = { done: $user && $user.pwd === $Params.pwd };"
]
},
"DeleteUser": {
"Params": "{userID: string}",
"Response": "{done: boolean}",
"Program": [
"# &User.Delete|userID=$Params.userID ",
" $Return = { done: true };"
]
},
"InsertUser": {
"Params": "{userID: string}",
"Response": "{done: boolean}",
"Program": [
"# &User.Insert|userID=$Params.userID ",
" $Return = { done: true };"
]
}
}
}
}
- #语句中可以包含赋值语句/数据库操作语句
- $变量也可以是自己声明的 在#语句中可以作这样的声明
- <mid>语句以#开头 前后都可以加上空格 <mid>语句会被编译为comp-token然后转化为具体的实现
- 不以#开头的语句代表ts语句
- $<var>代表的是接受预编译选项的变量
- Program字段下包含一个数组,这些分开的语句会被简单编译后插入到实现中
- 一份基本的operation模块长成这样