../../../
引入$ npm i
$ npm run dev
$ open http://localhost:7001/
$ npm run ci
$ npm start
npm run new
命令可以创建路由和service文件npm run ets
命令可以自动生成x.d.ts文件watchDirs: {
model: {
directory: 'app/model',
modelMap: {
test: 'testModel', // key为目录名,value为前面config里设置的对应的delegate
test2: 'test2Model'
},
generator: selfGenerator
}
}
npm run ci
命令可以构建生成环境代码,会在每个ts同级目录下生成js文件,egg运行时会优先加载js文件npm run clean
命令可以清除前面生成的js文件以前的写法
创建controller文件
创建xx方法
...
router.get('/test', xxx, controller.xx.xx)
...
现在的写法
只需要一句ARouter(app);配合装饰器即可自动生成路由。
// router.ts文件:
export default (app: Application) => {
// 自动注入路由
ARouter(app);
};
// app/controller路径下创建文件or目录:
controller
|
example
| |
| index.ts
| | |
| | @GET('/test')
| | test() // 生成路由 '/example/test'
| |
| test.tx
| |
| @GET('/test')
| test() // 生成路由 '/example/test/test'
| |
| @GET('/test2/:id')
| |
| test2() // 生成路由 '/example/test/test2/:id'
|
index.ts
|
@GET('/index')
test() // 生成路由 '/index'
@GET、@POST、@PUT、@DEL、@PATCH、@ALL
脚手架额外提供常用装饰器
Query 用于过滤get参数
Params 用于过滤post参数
Path 用于过滤路径里的参数
File 用于过滤文件
Headers 用于过滤headers
-----------------
以下是配合上面的装饰器使用,设置参数规则
-----------------
NotNull
Int
Float
Time
Arr
Bool
ObjContain
ArrContain
Min
Max
Allow
String
使用方法(具体可参考app/controller/example目录下的文件)
@GET('/test')
@authUser() // 权限验证
@Query({
a: [NotNull, Int]
b: [Int.Default(1)]
})
public async test() {
const {
service: { test },
filterQuery: { a, b }
} = this.ctx;
this.returnSuccess(await test.test.showData());
}
@POST('/testPost')
@Query({
ga: [ NotNull ] // query中的ga不能为空
})
@Params({
pa: [ Int, Min(0), Max(5) ], // params中的pa必须为整型且最小0最大5
time: [ Time('YYYY-MM-DD') ], // 日期格式化
arr: [ Arr ], // arr必须为数组
arrContain: [ ArrContain({ // arrContain必须为数组,且数组中的每一项都必须包含a、b
a: [ Int.Default(3) ], // a为整型,如果不是,会设置默认值3
b: [ Float ]
}) ],
arrContain2: [ ArrContain([ Int ]) ],
obj: [ ObjContain({ // obj中必须包含a、b
a: [ Int.Default(3) ],
b: [ Float ]
}) ],
allow: [ Allow([ 1, 2 ]) ], // allow只允许传1或2
allowDefault: [ Allow([ 1, 2 ]).Default(1) ] // allowDefault只允许传1或2,传其他值会自动设置为1
})
public async testPost() {
const {
filterQuery: { ga },
filterParams: {
pa,
time,
arr,
arrContain,
arrContain2,
obj,
allow,
allowDefault
}
} = this.ctx;
// this.ctx.request.body 可以取出原始的post值
this.returnSuccess({
ga,
pa,
time,
arr,
arrContain,
arrContain2,
obj,
allow,
allowDefault
});
}