express-verifier
v1.0.0
Published
input (params, query, headers, body) verifying middleware (connect/expressjs)
Downloads
15
Maintainers
Readme
express-verifier
body, params, query verifier middleware for express framework (nodejs)
all rules see https://www.npmjs.com/package/node-verifier
schema declaration see https://www.npmjs.com/package/node-verifier-schema
var express = require('express');
var bodyParser = require('body-parser');
var verifier = require('express-verifier');
var app = express();
var verify = verifier({
cwd: __dirname + '/specs/'
});
app.get('/', verify.query(function (required, optional) {
required('sortby', ['type string', {'contains': ['key', 'value']}]);
optional('orderby', ['type string', {'contains': ['ASC', 'DESC']}]);
}), function (req, res) {
res.send({
done: {
body: req.body,
query: req.query,
params: req.params,
headers: req.headers
}
});
});
app.post('/(:id)/', verify('get-user.yml'), resource);
define verifier by yaml get-user.yml:
---
schema:
body:
first_name:
- type string
- min_length 3
- max_length 20
last_name:
- type string
- min_length 3
- max_length 20
middle_name?:
- type string
- min_length 3
- max_length 20
params:
id:
- type: string
- format: ^\d+$
query:
orderby?:
- type: string
- contains:
- ASC
- DESC
verifierConstructor
var verifierConstructor = require('express-verifier');
var verifier = verifierConstructor(options);
options
options.cwd
String
- root path of yaml specs
options.preparePath( path )
function
- prepare yaml-loader path. must return path string
verifier
Set by schema. Schema must have fields "query", "params", "body", "headers"
var verifierConstructor = require('express-verifier');
var verifier = verifierConstructor();
var Schema = verifierConstructor.Schema;
var schema = Schema().object(function () {
this.field('params').object(function () {
this.required('id', [ 'format ^\\d+$' ]);
});
this.field('body').object(function (required, optional) {
required('sortby', ['type string', {'contains': ['key', 'value']}]);
optional('orderby', ['type string', {'contains': ['ASC', 'DESC']}]);
});
});
app.get('/(:id)/', verifier(schema), function () {
// ...
});
var verifierConstructor = require('express-verifier');
var verifier = verifierConstructor();
var Schema = verifierConstructor.Schema;
var schemaParams = new Schema().object(function (required) {
required('id', [ 'format ^\\d+$' ]);
});
var schemaBody = new Schema().object(function (required, optional) {
required('sortby', ['type string', {'contains': ['key', 'value']}]);
optional('orderby', ['type string', {'contains': ['ASC', 'DESC']}]);
});
app.get('/(:id)/', verifier.params(schemaParams), verifier.body(schemaBody), verifier.headers('get-user-headers.yaml'), function () {
// ...
});
Add new custom rules
see https://github.com/aliaksandr-pasynkau/node-verifier for more information
var Rule = require('express-verifier').Schema.Verifier.Rule;
var HasNotEdgeWhitespaces = Rule.extend({
check: function (value, params, done) {
if (typeof value === 'string') {
return new this.ValidationError('type', 'string');
}
return value === value.trim();
}
});
Rule.add('has_not_edge_whitespaces', HasNotEdgeWhitespaces);