@expresso/validator
TypeScript icon, indicating that this package has built-in type declarations

1.1.7 • Public • Published

Expresso Validator

JSON Schema validation middleware for Expresso

Summary

What is this

This middleware validates an input against a JSON Schema and automatically throws a boom error for badData (which is HTTP code 422 - Unprocessable Entity) if this input is not matched.

Basic Usage

Install:

$ npm i @expresso/validator

Import and use:

import { validate } from '@expresso/validator'

// Your expresso initialization here

const schema = {
  type: 'object',
  properties: {
    name: {
      type: 'string'
    },
    age: {
      type: 'integer'
    }
  },
  additionalProperties: false,
  required: ['name', 'age']
}

app.post('/users', validate(schema), (req: Reques, res: Response, next: NextFunction) => { // ... // })

Validating queries

By default, the validator will match the schema against the body of the request, this is why the root type is { type: 'object' }. It is also possible to validate the query string params:

import { validate } from '@expresso/validator'

// Your expresso initialization here

const schema = {
  type: 'object',
  properties: {
    name: {
      type: 'string'
    },
    age: {
      type: 'integer'
    }
  },
  required: ['name', 'age']
}

app.get('/users', validate.query(schema), (req: Reques, res: Response, next: NextFunction) => { // ... // })

This will validate the whole query string against the given schema.

validateType function

validateType is actually a dummy function that should be removed in runtime. It exists to give type safety for using @expresso/ts-transformer-json-schema

Errors

This validator follows Expresso's directives and returns a Boom error for BadData, right now it is not possible to change this behavior

Package Sidebar

Install

npm i @expresso/validator

Weekly Downloads

5

Version

1.1.7

License

MIT

Unpacked Size

18.8 kB

Total Files

15

Last publish

Collaborators

  • rjmunhoz
  • khaosdoctor