[英]Validating request in node.js and quiting if error
因此,当用户从我的服务器请求资源时,我当然希望确认请求本身是“安全的”且有效的。 当前,在我的代码中,我使用此自制程序解决方案,如下所示:
if(assertThat(validator.isAlphanumeric,data.currentQuestion,next)){return;}
其中assertThat()
在哪里
var assertThat = function(func,value,next){
if(!func(value)){
var err = new Error("[...]");
err.status = 422;
next(err);
return true;
}
}
这很好用,但是if
那里的阻止进一步执行的语句使我有些恼火(正确缩进会占用太多空间,而在一行上写看起来很丑)。 Express框架中是否有一种方法可以设计一个无需if
语句就可以工作的功能? 我可能会问不可能的事,但是由于我对node.js的经验有限,因此我试图尽可能精美地设计此应用程序,但我仍在进行检查。
确实,唯一可以绕过if
是,如果在以前使用assertThat()
任何路由处理程序或中间件之前插入自定义中间件函数。例如,中间件可以采用要应用于验证器的验证器列表。请求。 例:
function validate(validators) {
return function(req, res, next) {
var data = req.body;
for (var i = 0, validators.length, v; i < len; ++i) {
v = validators[i];
if (!v.fn(data[v.name])) {
var err = new Error('[...]');
err.status = 422;
return next(err);
}
}
next();
};
}
然后,您可以像这样使用它:
app.get('/foo',
validate([
{ fn: validator.isAlphanumeric, name: 'currentQuestion' }
]),
function(req, res) {
res.send('Passed validation!');
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.