Dựa trên diagram, validation có 2 tầng:
1. Client-Side Validation (Optional):
UX tốt hơn (feedback ngay lập tức) NHƯNG: Dễ bypass (user tắt JavaScript, dùng Postman…) 2. Server-Side Validation (Required - BẮT BUỘC):
Bảo mật: Không thể bypass Cuối cùng data vẫn phải qua server Layer cuối trước khi vào Database Nguyên tắc: LUÔN validate trên server, client-side chỉ là bonus cho UX!
1. Cài đặt Express-Validator
2. Import và sử dụng trong Routes
Basic Setup
3. Các loại validation phổ biến
String Validation
Password Validation
Number Validation
Length & Content Validation
Date Validation
Boolean & Checkbox
Array Validation
Custom Validation
4. Xử lý Validation Errors trong Controller
5. Ví dụ hoàn chỉnh: User Signup
Routes (routes/auth.js)
Controller (controllers/auth.js)
Frontend Response Handling
6. Best Practices
A. Tách Validation Rules ra file riêng
B. Tạo Error Handler Middleware
C. Sanitization - Làm sạch dữ liệu
D. Rate Limiting cho validation endpoints
E. Consistent Error Format
F. Custom Validator Functions
G. Validation cho File Uploads
Tóm tắt Best Practices
✅ LUÔN validate trên server - client validation chỉ là UX bonus ✅ Tách validation rules ra files riêng để reuse ✅ Sanitize input (trim, escape, normalize) để tránh XSS ✅ Consistent error format - dễ handle ở frontend ✅ Custom validators cho business logic phức tạp ✅ Async validation để check database (unique email, username…) ✅ Rate limiting cho sensitive endpoints (signup, login) ✅ Clear error messages - giúp user biết sửa gì ✅ Validate arrays và nested objects nếu cần ✅ Middleware pattern để reuse validation logic Express-validator giúp validation trở nên dễ dàng, an toàn và maintainable!