Skip to content

Glue code for connecting AJV with nestjs validation

Notifications You must be signed in to change notification settings

mrdck/nestjs-ajv-glue

Repository files navigation

nestjs-ajv-glue

This project contains glue code for connecting nestjs pipe validation with AJV

Installation

$ npm i --save nestjs-ajv-glue

Usage

Setup validation pipe

import { NestFactory } from '@nestjs/core'
import { AjvValidationPipe } from 'nestjs-ajv-glue'

async function bootstrap() {
    const app = await NestFactory.create(AppModule)

    app.useGlobalPipes(new AjvValidationPipe())

    await app.listen(port)
}

Create AJV schema

const schema: JSONSchemaType<Foo> = {
    type:                 'object',
    additionalProperties: false,

    properties: {
        bar: {
            type:      'string',
            minLength: 1,
            maxLength: 3,
        },
    },

    required: ['bar'],
}

Decorate handler params with schema

import { AjvBody, AjvQuery, AjvParams } from 'nestjs-ajv-glue'

@Controller('/foo')
class FooController {

  @Get()
  filter(@AjvQuery(schema) query: FilterFooRequest): FilterFooRequest {
    return query
  }

  @Post()
  create(@AjvBody(schema) body: CreateFooRequest): string {
    return 'ok'
  }

  @Delete(':id')
  delete(@AjvParams(schema) params: DeleteFooRequest): string {
    return 'ok'
  }
}

Decorators

The following decorators are available:

  • @AjvBody for validating request body
  • @AjvParams for validating request params
  • @AjvQuery for validating request query

Contributing

Feel free to submit issues and enhancement requests.

License

MIT

About

Glue code for connecting AJV with nestjs validation

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published