在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:molinjun/koa2-validation开源软件地址:https://github.com/molinjun/koa2-validation开源编程语言:JavaScript 100.0%开源软件介绍:koa2-validationkoa2-validation is a koa2 middleware to validate the request with Joi. Support Version TipsAs new version Joi has some breaking changes, some old schema is not workable. To avoid the big change for using legacy koa2-validation version, you need to update your code as follows, if you want to use new version Joi.
UsageInstall with npm: npm i -S koa2-validation Then, you can use koa2-valition to configure the validation schemas in routes. The example below is to
define three validations about user. const http = require('http');
const Koa = require('koa');
const bodyParser = require('koa-bodyparser');
const router = require('koa-router')();
const validate = require('koa2-validation'); // 1. import the koa2-validation
const user = require('./user');
router.post('/users', validate(user.v.addUser), user.addUser); // 3. setup the validate middleware
router.get('/users/:id', validate(user.v.getUserInfo), user.getUserInfo);
router.get('/users', validate(user.v.getUserList), user.getUserList);
const app = new Koa();
// error handler
app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
ctx.status = err.status || err.code;
ctx.body = {
success: false,
message: err.message,
};
}
});
app.use(bodyParser()); // bodyParser should be before the routers
app.use(router.routes());
const server = http.createServer(app.callback());
module.exports = server; You still need to define the validation schema in your controllers, as follows: const _ = require('lodash');
const Joi = require('joi');
const v = {};
exports.v = v;
const users = [{
id: '001',
name: 'dennis1',
age: 18,
}, {
id: '002',
name: 'dennis2',
age: 20,
}];
// 2. define the validation schema
v.addUser = {
body: {
id: Joi.string().required(),
name: Joi.string(),
age: Joi.number(),
},
};
exports.addUser = async (ctx) => {
const user = ctx.request.body;
users.push(user);
ctx.body = { success: true, data: users };
}; The validation schema is followed by Joi. You can define more effective schemas based on joi docs. Error handlerWhen bad request, koa2-validation has catched the error, and throw a standard Error instance, which has an attr status 400. app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
ctx.status = err.status || err.code;
ctx.body = {
success: false,
message: err.message,
};
}
}); ExampleIn the test foler, I made a demo about user management. You can get how to use koa2-validation from it. If you have some questions, you can post an issue. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论