🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

koa-yup-validator

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

koa-yup-validator

Koa middleware for validating and coercing request data.

4.1.0
latest
Source
npm
Version published
Weekly downloads
312
-38.82%
Maintainers
1
Weekly downloads
 
Created
Source

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
}
partialAllows data to satisfy schema partially at root level (if the data key exists it must satisfy schema). Useful for example patch operations.
yupOptions 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!";
  }
);

FAQs

Package last updated on 29 Jul 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts