在Node.js中validationAPIinput的最佳实践?

我正在开发一个移动应用程序,后端在Node.js中。 用户将几乎完全通过移动应用程序与平台进行交互。 作为后端的一部分,我公开了多个API供移动应用程序使用 – 例如:创build账户,发送消息,发布图片等的API。

validationAPIinput的最佳实践是什么?

我的想法是为每个API创build一个模块,其目的是从http请求中提取,消毒和validation相关属性。 例如,“创build账户”API将具有关联的AccountCreationRequest模块,其中具有validate方法,其中将定义所有账户创build特定的validation。 然后,每个特定的validation可以由诸如expressionvalidation器validation器的库执行。

 exports.AccountCreationRequest = { init: function(request) { ... extract attributes ... }, sanitizeAndValidate: function() { ... use express-validator/validator on attributes such as username, email, etc ... }, isValid: function() { ... return result of validation ... } }; 

然后,当后端API收到请求时,

 var accountCreationRequest = AccountCreationRequest.init(httpRequest); accountCreationRequest.sanitizeAndValidate(); if (accountCreationRequest.isValid()) { ... store in database and notify client of success ... } else { ... notify client of failure ... } 

我关心的是N个API将需要N个请求validation模块。 但是,由于每个API都是唯一的,所以我不认为有很多机会重用代码。

如果你使用快递,你可以做类似的事情

 app.use('/private', function(req, res, next) { if (/*some condition to check for authentication*/) { next(); } else { //unauthorized res.status(401).send('not authorized, please authenticate'); } }); 

将通过您的身份validation条件过滤/ privatepath下的所有内容。 如果您愿意,也可以在path中使用通配符。