express-verifier

input (params, query, headers, body) verifying middleware (connect/expressjs)

Usage no npm install needed!

<script type="module">
  import expressVerifier from 'https://cdn.skypack.dev/express-verifier';
</script>

README

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