Skip to content

aliaksandr-master/express-verifier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

npm npm Dependency Status devDependency Status Build Status Coverage Status

express-verifier

Gitter

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);

About

body, params, query verifier middleware for express framework (nodejs)

Resources

License

Stars

Watchers

Forks

Packages

No packages published