Skip to content

Validate a request

LeChatErrant edited this page Mar 20, 2021 · 1 revision

Validate a request

Requests body parameters are validated thanks to class-validator

  1. Define the DTO (Data Transfer Object) schema for your route
import { IsEmail, IsOptional, IsString, MinLength } from 'class-validator';

export class UserSignupDto {
  @IsEmail()
  email!: string;

  @IsString()
  @IsOptional()
  name!: string;

  @IsString()
  @MinLength(8)
  password!: string;
}
  1. Type your controllers
export async function signupController(payload: UserSignupDto) {
  /*  Signup logic, with typed payload  */
}
  1. Add the validationMiddleware to your routes
router.get(
  '/users/signup',
  validate(UserSignupDto),
  handler(async (req, res) => {
    /*  Here, you are sure all constraints from your DTO are respected. You can safely pass it to your controller */
    await signupController(req.body);
  })
);
  1. Start some personal projects, since you don't even need to code anymore

Clone this wiki locally