koa-yup-validator
TypeScript icon, indicating that this package has built-in type declarations

4.1.0 • Public • Published

koa-yup-validator CircleCI Greenkeeper badge

Koa middleware for validating and coercing request data.

Usage

yarn add yup koa-yup-validator

import createValidator from "koa-yup-validator";
const validator = createValidator(validators, options); /* see below */

Arguments

validators

{
  body: schema; // validates request body
  headers: schema; // validates request headers
  params: schema; // validates path params
  query: schema; // validates query params
}

options:

Specify options for each validator ie.

{
  body: options
}
partial Allows data to satisfy schema partially at root level (if the data key exists it must satisfy schema). Useful for example patch operations.
yup Options to be passed to yup validate.

Error handling

There is an optional error middleware you may use for handling errors thrown by the validation middleware:

import { createErrorMiddleware } from "koa-yup-validator";
app.use(createErrorMiddleware());
//...your routes

Examples

Validate headers and body

import * as yup from "yup";
import validator from "koa-yup-validator";

const Pizza = yup.object().shape({
  name: yup.string().required(),
  toppings: yup.array().of(yup.string()),
});
const RequiredHeaders = yup.object().shape({
  Authorization: yup.string().required(),
  "x-pizza-maker": yup.string(),
});

router.post(
  "/pizza",
  validator({ body: Pizza, headers: RequiredHeaders }),
  (ctx) => {
    console.log(ctx.request.headers["x-pizza-maker"]);
    ctx.response.status = 200;
    ctx.response.body = "Valid pizza!";
  }
);

// Pass yup options for body
router.post(
  "/strict-pizza",
  validator(
    { body: Pizza, headers: RequiredHeaders },
    { body: { yup: { strict: true } } }
  ),
  (ctx) => {
    console.log(ctx.request.headers["x-pizza-maker"]);
    ctx.response.status = 200;
    ctx.response.body = "Valid pizza!";
  }
);

Readme

Keywords

none

Package Sidebar

Install

npm i koa-yup-validator

Weekly Downloads

733

Version

4.1.0

License

MIT

Unpacked Size

67.3 kB

Total Files

47

Last publish

Collaborators

  • turkkam