Koa 使用小技巧(小结)(3)

通过joi简单快捷实现了参数的校验,不过在实际使用中,有部分的参数校验规则是通用的,如账号、密码这些的校验规则在注册和登录中都通过,但是有些接口是可选,有一些是必须,怎么才能更通用一些呢?代码调整如下:

const userSchema = { // 账号限制长度为3-20个字符串 account: () => Joi.string().min(3).max(20), // 密码限制长度为6-30,而且只允许字母与数字 password: () => Joi.string().regex(/^[a-zA-Z0-9]{6,30}$/), email: () => Joi.string().email(), } router.post('/users/v1/register', async (ctx) => { const data = validate(ctx.request.body, Joi.object({ account: userSchema.account().required(), password: userSchema.password().required(), email: userSchema.email().optional(), })); ctx.body = { account: data.account, }; });

经此调整后,将用户参数校验的基本规则都定义在 userSchema 中,每个接口在各自的场景下选择不同的参数以及增加规则,提高代码复用率以及校验准确性。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ac7b1a49546ab2a8610deba2c5993d38.html