Skip to content

obasilakis/middy-middleware-class-validator

 
 

Repository files navigation

middy-middleware-class-validator

npm version downloads open issues FOSSA Status debug build status codecov dependency status devDependency status Greenkeeper semantic release Gitter

A middy middleware that returns errors as http errors, compatible with http-errors.

Installation

Download node at nodejs.org and install it, if you haven't already.

npm install middy-middleware-class-validator --save

Documentation

There is additional documentation.

Usage

// When using decorators, don't forget to import this in the very first line of code
import 'reflect-metadata'

import { APIGatewayProxyEvent } from 'aws-lambda'
import { IsString } from 'class-validator'
import middy from 'middy'
import JSONErrorHandlerMiddleware from 'middy-middleware-json-error-handler'

import ClassValidatorMiddleware, { WithBody } from 'middy-middleware-class-validator'

// Define a validator for the body via class-validator
class NameBody {
  @IsString()
  public firstName: string

  @IsString()
  public lastName: string
}

// This is your AWS handler
async function helloWorld (event: WithBody<APIGatewayProxyEvent, NameBody>) {
  // Thanks to the validation middleware you can be sure body is typed correctly
  return {
    body: `Hello ${event.body.firstName} ${event.body.lastName}`,
    headers: {
      'content-type': 'text'
    },
    statusCode: 200
  }
}

// Let's "middyfy" our handler, then we will be able to attach middlewares to it
export const handler = middy(helloWorld)
  .use(ClassValidatorMiddleware({
    // Add the validation class here
    classType: NameBody
  }))
  // The class validator throws validation errors from http-errors which are compatible with
  // the error handler middlewares for middy
  .use(JSONErrorHandlerMiddleware())

About

A middy validation middleware using class-validator.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 67.6%
  • JavaScript 32.4%