koa-yup-validator

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);
Arguments
validators
{
body: schema;
headers: schema;
params: schema;
query: schema;
}
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());
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!";
}
);
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!";
}
);