API là xương sống của hầu hết hệ thống hiện đại.
Nhưng rất nhiều developer:
- Thiết kế API không nhất quán
- Trả response lộn xộn
- Không chuẩn HTTP
Kết quả: khó maintain, khó scale.
#API Design là gì?
Là cách bạn thiết kế endpoint, request và response của hệ thống.
Mục tiêu:
- Dễ hiểu
- Dễ sử dụng
- Dễ mở rộng
#RESTful API là gì?
REST (Representational State Transfer) là chuẩn phổ biến nhất.
#Ví dụ chuẩn REST
| Method | Endpoint | Ý nghĩa |
|---|---|---|
| GET | /users | Lấy danh sách |
| GET | /users/{id} | Lấy chi tiết |
| POST | /users | Tạo mới |
| PUT | /users/{id} | Update |
| DELETE | /users/{id} | Xóa |
Rule:
- Dùng đúng HTTP method
- Endpoint là resource, không phải action
#Naming Convention
❌ Sai
/getUsers
/createUser
✅ Đúng
/users
HTTP method đã thể hiện action.
#Response Format (rất quan trọng)
#Ví dụ chuẩn
{
"data": {...},
"message": "success",
"errors": null
}
Consistent là chìa khóa.
#HTTP Status Code
| Code | Ý nghĩa |
|---|---|
| 200 | OK |
| 201 | Created |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 500 | Server Error |
Không nên luôn trả 200 ❌
#Pagination
User::paginate(10);
Response:
{
"data": [...],
"meta": {
"page": 1
}
}
Tránh load toàn bộ data.
#Filtering & Sorting
/users?status=active&sort=created_at
Giúp API linh hoạt.
#API Versioning
#Cách phổ biến
/api/v1/users
/api/v2/users
Tránh breaking change.
#Error Handling
#Ví dụ
{
"message": "Validation failed",
"errors": {
"email": ["Email is required"]
}
}
Rõ ràng, dễ debug.
#Authentication cho API
- Token-based (Sanctum)
- Bearer token
#Real Case Production
#Case: Mobile App
- API phải stable
- Response consistent
#Case: Microservices
- Versioning bắt buộc
- Error rõ ràng
#Anti-pattern
-
Endpoint không nhất quán: Khó maintain
-
Không dùng status code đúng: Khó debug
-
Response lộn xộn: Frontend khó xử lý
#Performance Tips
- Pagination
- Cache API
- Giảm payload
#Mindset Senior
Junior:
API trả data là được
Senior:
API phải ổn định, rõ ràng và dễ scale
#Câu hỏi thường gặp (Interview)
1. RESTful API là gì?
Là chuẩn thiết kế API dựa trên resource và HTTP method
2. Tại sao cần versioning API?
Tránh breaking change khi update hệ thống
3. HTTP status code quan trọng như thế nào?
Giúp client hiểu kết quả request
4. Pagination là gì?
Chia nhỏ dữ liệu để tránh load quá nhiều
5. API nên trả response như thế nào?
Consistent, rõ ràng, có data + message + error
#Kết luận
API design tốt giúp:
- Frontend dễ làm việc
- Hệ thống dễ scale
- Dễ maintain lâu dài
Đây là kỹ năng bắt buộc của backend developer.