0.0.5 • Published 4 years ago

amn-express-validate v0.0.5

Weekly downloads
4
License
ISC
Repository
github
Last release
4 years ago

AMN Express Validate

DO NOT TRUST A CLIENT!

Amn Express Validate provides a simple and flexible way of validation client's input.

It is a simple wrapper around joi validator and convert it into connect middleware. It helps easily build validation step into express middleware chain.

In order to deliver meaningful error message back to client, Amn Express Validate leverage another amn package Amn Error.

AMN leverage schema validation for client's input through joi, hence, it's your responsibility to install the package before use validate. Please, follow peer dependency message at installation.

Get started

Installation

npm i amn-express-validate

Examples

The middleware validate is HOC. That allows to add extra control over the way the middleware work. It consumes two parameters,

  • schema - an ObjectSchema which defines validation rules.
  • source - an optional parameter 'body' or 'query' or 'params' to define which client input to validate. In case none provided, the middleware picks all input from 'body' and 'query' and 'params'.
const Joi = require('joi');
const validate = require('amn-express-validate');

// validate req.body
const userSignUp = Joi.object().keys({
    email: Joi.string().email().required(),
    password: Joi.string().min(4).max(20).required(),
});

router.post('/user/signup',
    , validate(userSignUp, 'body')
    , singUpMiddleware
);

// validate req.params in url string
const postId = Joi.object().keys({
    pid: Joi.string().pattern(/^[0-9a-fA-F]{24}$/).required()
});

const postBody = Joi.object().keys({
    title: Joi.string().required(),
    text: Joi.string().optional()
});

router.put('/post/:pid/',
    , validate(postId, 'params')
    , postUpdateMiddleware
);

// you can call validate multiply times
router.put('/post/:pid/',
    , validate(postId, 'params') // validate params
    , validate(postBody, 'body') // validate body
    , postUpdateMiddleware
);

Error

Amn Express Validate leverage another amn package Amn Error to report an error back to client.

Errors have the following response

  • http status 400;
  • code BAD_REQUEST;
  • message is a error description generated by joi.