koa2-joi-validator
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

Koa Joi Validator

A simple validator for koa 2 application, inspired from koa-joi-validator, with Typescript supported

API

A koa middleware which will validate and transform the request

param type required description
options object true
options.type string Default to json the coBody parser to call, can be json form or text
options.failure int (ctx: Context, err: ValidationError) => any false
options.options {} false Options passed to Joi validator, such as allowUnknown
options.body Joi.object false A joi schema validated against the request body
options.params Joi.object false A joi schema validated against the request params
options.headers Joi.object false A joi schema validated against the request headers
options.query Joi.object false A joi schema validated against the request query

Requirement

  • NodeJS >= 7.6 is required.
  • Joi

Installation

Install using npm:

npm install koa2-joi-validator joi

Usage

import { KoaJoiValidator } from "koa2-joi-validator";
import * as Joi from "joi";
 
 
router.post('/:number/:string/:date',
  KoaJoiValidator({
    type: 'json',
    params: {
      number: Joi.number().required(),
      string: Joi.string().required(),
      date: Joi.string().isoDate().required()
    },
    body: {
      number: Joi.number().required(),
      string: Joi.string().required(),
      date: Joi.string().isoDate().required()
    },
    headers: Joi.object({
      number: Joi.number().required(),
      string: Joi.string().required(),
      date: Joi.string().isoDate().required()
    }).options({ allowUnknown: true }),
    query: {
      number: Joi.number().required(),
      string: Joi.string().required(),
      date: Joi.string().isoDate().required()
    },
    failure(ctx: Koa.Context, err: Joi.ValidationError) {
      console.log(err);
      ctx.throw(400);
      
    }
  }),
  (ctx: Koa.Context) => {
    expect(typeof ctx.params.number === 'number');
    expect(typeof ctx.params.string === 'string');
    expect(ctx.params.date instanceof Date);
 
    ['body', 'headers', 'query'].forEach((el) => {
      expect(typeof ctx.request[el].number === 'number');
      expect(typeof ctx.request[el].string === 'string');
      expect(ctx.request[el].date instanceof Date);
    });
 
    ctx.status = 204;
  },
  
);

Readme

Keywords

Package Sidebar

Install

npm i koa2-joi-validator

Weekly Downloads

15

Version

1.0.5

License

MIT

Unpacked Size

12.3 kB

Total Files

7

Last publish

Collaborators

  • hgiasac