egg-onecode-router
v1.0.9
Published
基于eggjs的路由集参数验证插件
Downloads
3
Readme
路由部分
import router from 'egg-cool-router';
@router.prefix('/')
export default class WelcomeController extends BaseController {
@router.get('/')
public async welcome () {
await this.ctx.render('welcome', { text: 'HELLO COOL-ADMIN' });
}
}
参数验证
@router.get('/',true)
- 参数验证规则放在app/rules文件夹下,一个方法对应一个文件。例:请求方法为app/user/address,则该路由的验证文件路径为app/rules/app/user/address.ts。文件内容例:
module.exports = {
phone: [
{ required: true, message: '手机号不能为空' },
{ min: 11, message: '手机号格式不正确' }
],
address: [
{ required: true, message: '详细地址不能为空' },
],
name: [
{ required: true, message: '收件人不能为空' },
],
province: [
{ required: true, message: '省份不能为空' },
],
};
//中间件
const validate = await router.validate(ctx)
if (validate !== true) {
ctx.status = 400;
ctx.body = {
code: 400,
message: validate,
};
return;
}
- 常用规则
规则名 释义 使用案例
required 校验非空 { name: [ 'required' ] }
regexpPhone 校验手机号 { phone: [ 'regexpPhone' ] }
regexpEmail 校验邮箱 { email: [ 'regexpEmail' ] }
minLength 校验最小长度 { password: [ 'minLength:8' ] }
maxLength 校验最大长度 { password: [ 'maxLength:10' ] }
enum 校验值是否匹配其一 { role: [ 'enum:[3,6,9]' ] }
equal 校验值是否相等 { score: [ 'equal:100' ] }
type 校验是否是目标类型 { age: [ 'type:number' ] }
min 校验最小值 { age: [ 'min:1' ] }
max 校验最大值 { age: [ 'max:1000' ] }