-
Notifications
You must be signed in to change notification settings - Fork 6
Validate a request
LeChatErrant edited this page Mar 20, 2021
·
1 revision
Requests body parameters are validated thanks to class-validator
- 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;
}- Type your controllers
export async function signupController(payload: UserSignupDto) {
/* Signup logic, with typed payload */
}- 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);
})
);- Start some personal projects, since you don't even need to code anymore