koa使用joi来进行参数校验
post on 2024-03-07 17:35:34
后端
koa
joi
0327起因是koa的很多参数校验的插件都好几年不更新了,然后Joi作为nodejs中非常流行的参数校验的插件,于是只需将Joi稍微进行封装即可优雅的进行参数校验
以下是utils/context.js
中封装的校验函数
const Joi = require('joi')
function validate(params = {}, schema = {}) {
const { error } = Joi.object(schema).validate(params, {
abortEarly: false, allowUnknown: true
})
return error
}
// 绑定 app.context ctx.function name直接调用
module.exports = {
validate
}
在app.js中挂载到上下文中app.js
const app = new Koa()
// 在创建koa后进行挂载
const context = require('./utils/context')
Object.keys(context).forEach(key => {
app.context[key] = context[key] // 绑定上下文对象
})
以下是一个简单的使用示例
router.get('/json', async (ctx) => {
const error = ctx.validate(ctx.request.query, {
page: Joi.number(),
pageSize: Joi.number(),
keyword: Joi.string().allow(''),
category: Joi.string(),
tag: Joi.string(),
preview: Joi.number(),
order: Joi.string()
})
if (error) return ctx.body = result(null, error.message, false);
const data = ctx.request.query
return ctx.body = result(data, '成功');
})
评论支持MarkDown格式