Options
All
  • Public
  • Public/Protected
  • All
Menu

next-validations

Welcome to next-validations 👋

Version Downloads/week Prerequisite License: MIT Twitter: jellydn

NextJS API Validations

🏠 Homepage

Demo

https://gyazo.com/bf4582f7b7aa0f0ae67c4cc337c4e974.gif

Prerequisites

  • node >=12
  • nextjs >= 9

Install

yarn add next-validations

Features

Usage

Validate custom API endpoint with Yup

yarn add yup next-validations
import { NextApiRequest, NextApiResponse } from 'next';
import { withValidation } from 'next-validations';
import * as yup from 'yup';

const schema = yup.object().shape({
name: yup.string().required(),
});

const validate = withValidation({
schema,
type: 'Yup',
mode: 'query',
});

const handler = (req: NextApiRequest, res: NextApiResponse) => {
res.status(200).json(req.query);
};

export default validate(handler);

Validate custom API endpoint with Zod

yarn add zod next-validations
import { NextApiRequest, NextApiResponse } from 'next';

import { z } from 'zod';
import { withValidation } from 'next-validations';

const schema = z.object({
username: z.string().min(6),
});

const validate = withValidation({
schema,
type: 'Zod',
mode: 'body',
});

const handler = (req: NextApiRequest, res: NextApiResponse) => {
res.status(200).json(req.body);
};

export default validate(handler);

Validate custom API endpoint with fastest-validator

yarn add fastest-validator next-validations
import { NextApiRequest, NextApiResponse } from 'next';
import { withValidation } from 'next-validations';

const schema = {
name: { type: 'string', min: 3, max: 255 },
email: { type: 'email' },
age: 'number',
};

const validate = withValidation({
schema,
type: 'FastestValidator',
mode: 'body',
});

const handler = (req: NextApiRequest, res: NextApiResponse) => {
res.status(200).json(req.body);
};

export default validate(handler);

Validate custom API endpoint with joi

yarn add joi next-connect next-validations
import { NextApiRequest, NextApiResponse } from 'next';

import Joi from 'joi';
import connect from 'next-connect';
import { withValidation } from 'next-validations';

const schema = Joi.object({
dob: Joi.date().iso(),
email: Joi.string()
.email()
.required(),
name: Joi.string().required(),
});

const validate = withValidation({
schema,
type: 'Joi',
mode: 'body',
});

const handler = (req: NextApiRequest, res: NextApiResponse) => {
res.status(200).json(req.body);
};

export default connect().post(validate(), handler);

Run tests

yarn test

Author

👤 Huynh Duc Dung

Stargazers

Stargazers repo roster for @jellydn/next-validations

Show your support

Give a ⭐️ if this project helped you!

![support us](https://img.shields.io/badge/become-a patreon%20us-orange.svg?cacheSeconds=2592000)


This README was generated with ❤️ by readme-md-generator

Generated using TypeDoc