Skip to content

tinacious/express-joi-validate

Repository files navigation

Route validation for Express using Joi

codecov

This custom middleware is for those who prefer to use Express but want to use the Joi validation library to validate the query, params, and body of requests.

Usage

Install with NPM:

npm install express-joi-validate --save

Or with Yarn:

yarn add express-joi-validate

Without route validation, an endpoint may look something like this:

app.get('/contacts/:id', contactsHandler);

To implement route validation, simply call the provided validation function with the desired schema that uses Joi:

const Joi = require('@hapi/joi');
const validate = require('express-joi-validate');

const contactSchema = {
  params: {
    id: Joi.number().required()
  }
};

app.get('/contacts/:id', validate(contactSchema), contactsHandler);

In TypeScript, it would look like this:

import Joi, { SchemaMap } from '@hapi/joi';
import validate from 'express-joi-validate';

const contactSchema: SchemaMap = {
  params: {
    id: Joi.number().required()
  }
};

app.get('/contacts/:id', validate(contactSchema), contactsHandler);

Note: for the above, the type SchemaMap is inferred and not required.

For more information about this library, see the blog post Express route param validation (Node.js).

Development

Testing

Test the 3 different types of validations using the tests and mock server:

npm test

TypeScript

Generate TypeScript definitions:

npm run tsc

About

⛔️ Simple route validation middleware for Express using Joi 🚥

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 2

  •  
  •