Data Validation
Validation is essential for correctness, security, and stable APIs.
Why validate?
Without validation, you can get:
- Malicious payload injection
- Type mismatches
- Invalid business data
- Downstream persistence errors
With validation, you get predictable and safer behavior.
Install validation component
npm install @midwayjs/validatepackage.json:
{ "dependencies": { "@midwayjs/validate": "^4.0.0" }}Optional Swagger support:
npm install @midwayjs/swaggerpackage.json:
{ "dependencies": { "@midwayjs/swagger": "^4.0.0" }}Enable validate component
import { Configuration } from '@midwayjs/core';import * as koa from '@midwayjs/koa';import * as validate from '@midwayjs/validate';
@Configuration({ imports: [koa, validate],})export class MainConfiguration {}DTO + @Validate()
import { Rule, RuleType } from '@midwayjs/validate';
export class CreateUserDTO { @Rule(RuleType.string().required()) name: string;
@Rule(RuleType.string().email().required()) email: string;
@Rule(RuleType.number().min(0).max(150).optional()) age?: number;}import { Controller, Post, Body, Inject } from '@midwayjs/core';import { Validate } from '@midwayjs/validate';
@Post('/')@Validate()async create(@Body() dto: CreateUserDTO) { const user = await this.userService.createUser(dto.name, dto.email); return { success: true, message: 'User created successfully', data: user, };}Summary
- Define validation in DTO classes
- Use
@Validate()on handlers - Keep validation close to API contract
Files
Preparing Environment
- npm install
- npm run dev