1. API Validation là gì?

API Validation là quá trình kiểm tra dữ liệu mà Client gửi lên API có đúng định dạng, đúng kiểu dữ liệu và hợp lệ theo business rule hay không trước khi xử lý.

Ví dụ Client gửi:

{
  "name": "",
  "age": -5,
  "email": "abc"
}

API cần kiểm tra:

  • name có được để trống không?
  • age có phải số hợp lệ không?
  • age có lớn hơn 0 không?
  • email có đúng định dạng không?

Nếu dữ liệu không hợp lệ → API trả lỗi thay vì tiếp tục xử lý.

2. Vì sao cần Validation?

Validation giúp:

  • Ngăn dữ liệu sai đi vào hệ thống.
  • Tránh lỗi khi xử lý hoặc lưu Database.
  • Đảm bảo dữ liệu nhất quán.
  • Phản hồi lỗi rõ ràng cho Client.
  • Giảm các lỗi phát sinh ở những tầng phía sau.
  • Tăng độ an toàn cho API.

Có thể hiểu đơn giản:

Client
  ↓
Request
  ↓
Validation
  ↓
Dữ liệu hợp lệ?
  ├── Không → Trả lỗi
  │
  └── Có
       ↓
    Business Logic
       ↓
    Database

3. Validation thường kiểm tra những gì?

validation thường kiểm tra field bắt buộc phải có

{
  "name": "Nguyen Van A"
}
kiểm tra không được rỗng
null
""
"   "

Ví dụ:

@NotBlank
private String name;
@noteBlank thường dùng khi String không được null không được rỗng và không chứa khoản trắng

kiểm tra về độ dài của ky tự.

Ví dụ username phải từ 3–20 ký tự:

@Size(min = 3, max = 20)
private String username;

4. Validation khác Business Rule như thế nào?

validation sẽ kiểm tra dữ liệu đầu và có khớp và đúng hay không.

còn Business Rule là kiểm tra logic nghiệp vụ

Ví dụ:

User phải đủ 18 tuổi mới được đăng ký.
Email không được trùng với tài khoản đã tồn tại.
Sản phẩm chỉ được đặt nếu còn hàng.
User chỉ được hủy đơn hàng khi đơn đang ở trạng thái PENDING.

5. Validation với REST API

Ví dụ API:

POST /users

Request:

{
  "name": "",
  "email": "abc",
  "age": 15
}

API có thể trả:

400 Bad Request

với:

{
  "message": "Validation failed",
  "errors": {
    "name": "Name is required",
    "email": "Invalid email",
    "age": "Age must be at least 18"
  }
}

6. Tóm lại

validation là kiểm tra dữ liệu đưa vào có đúng yêu cầu cơ bản hay không nếu đúng sẽ xử lý tiếp không sẽ xuất thông báo lỗi. việc check lỗi đầu vào bằng validation sẽ giúp giảm request rác không cần thiết.

Bài viết khác

JSON & HTTP Status Codes – Nền tảng quan trọng khi làm REST API

JSON & HTTP Status Codes – Nền tảng quan trọng khi làm REST API khi là việc với REST API client và server cần hai thứ quan trọng: JSON để trao đổi dữ liệu HTTP Status Codes là hiển thị trạng thái có biết request đã xảy ra chuyện gì 1. JSON là gì? JSON […]

REST API – Cách thiết kế và xây dựng API theo REST

REST API – Cách thiết kế và xây dựng API theo REST khi chúng ta xậy dựng một website để mà frontend có thể giao tiếp được với backend đó chính là API. Ví dụ: Frontend ↓ GET /users // đây là API ↓ Backend ↓ Database Frontend có thể gửi request để lấy danh […]

Series 1 — Web Fundamentals: Internet – Http/Https

Series 1 — Web Fundamentals Internet → HTTP/HTTPS → DNS → Browser   Bài 1 – Internet Fundamentals   Khi bắt đầu học Frontend, chúng ta thường tập trung vào HTML, CSS và JavaScript. Tuy nhiên, trước khi tìm hiểu cách xây dựng một website, có một câu hỏi cơ bản mà bất kỳ Frontend […]

HTTP & HTTPS – Nền tảng giao tiếp trên Web

HTTP & HTTPS – Nền tảng giao tiếp trên Web Khi làm web hoặc backend, có một thứ gần như xuất hiện ở mọi nơi nhưng rất dễ bị xem là hiển nhiên: HTTP. Mỗi khi mở một website, gọi một API, đăng nhập, gửi form hay tải một file, client và server đều cần […]

Return First

Return First – Tư duy xử lý điều kiện trong code Khi bắt đầu làm việc với code thực tế, chúng ta sẽ thường gặp những function chứa rất nhiều điều kiện. Ban đầu, việc sử dụng if/else để xử lý từng trường hợp là hoàn toàn bình thường. Tuy nhiên, khi logic ngày càng […]

SOLID

SOLID – 5 nguyên tắc giúp thiết kế code tốt hơn SOLID là 5 nguyên tắc thiết kế trong lập trình hướng đối tượng (OOP), giúp code dễ đọc, dễ thay đổi, dễ mở rộng và dễ bảo trì. SOLID không phải framework hay tool mà là tư duy thiết kế code. Nó giúp hạn […]

Leave a Reply

Your email address will not be published. Required fields are marked *