express-verifier

1.0.0 • Public • Published

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

Package Sidebar

Install

npm i express-verifier

Weekly Downloads

0

Version

1.0.0

License

MIT

Last publish

Collaborators

  • alxe.master