推荐答案
// www.javascriptcn.com code example
const { body, validationResult } = require('express-validator');
const express = require('express');
const app = express();
app.use(express.json());
app.post('/user',
// 验证规则
body('username').isEmail().withMessage('用户名必须是有效的邮箱地址'),
body('password').isLength({ min: 5 }).withMessage('密码长度至少为5个字符'),
(req, res) => {
// 检查验证结果
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
// 如果验证通过,继续处理请求
res.send('用户创建成功');
}
);
app.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000');
});本题详细解读
1. 引入 express-validator
首先,我们需要引入 express-validator 中的 body 和 validationResult 方法。body 用于定义验证规则,而 validationResult 用于获取验证结果。
const { body, validationResult } = require('express-validator');2. 定义验证规则
在路由处理函数中,我们可以使用 body 方法来定义验证规则。例如,body('username').isEmail() 表示 username 字段必须是一个有效的邮箱地址,body('password').isLength({ min: 5 }) 表示 password 字段的长度至少为5个字符。
app.post('/user',
body('username').isEmail().withMessage('用户名必须是有效的邮箱地址'),
body('password').isLength({ min: 5 }).withMessage('密码长度至少为5个字符'),
(req, res) => {
// ...
}
);3. 检查验证结果
在处理请求时,我们使用 validationResult(req) 来获取验证结果。如果验证失败,errors.isEmpty() 会返回 false,此时我们可以返回一个包含错误信息的响应。
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}4. 处理验证通过的请求
如果验证通过,我们可以继续处理请求,例如创建用户并返回成功响应。
res.send('用户创建成功');5. 启动服务器
最后,启动 Express 服务器并监听端口。
app.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000');
});通过以上步骤,我们可以在 Express 应用中使用 express-validator 中间件进行数据验证,确保请求数据的合法性。