API Design
cảnh báo
Nội dung trang này chưa được dịch sang tiếng Việt. Vui lòng tham khảo bản tiếng Anh.
📚 Overview
APIs (Application Programming Interfaces) bridge services. Good API design provides:
- Easy to maintain and evolve
- Developer-friendly
- Consistent behavior
- Good performance
🎯 RESTful API Design
Resource Naming
Best Practices:
| Pattern | ❌ Avoid | ✅ Use |
|---|---|---|
| Nouns | /getUsers | /users |
| Plural | /user | /users |
| Nesting | /users/1 | /users/{id} |
| Filtering | /users?active=true | /active-users |
HTTP Methods
| Method | Safe | Idempotent | Use Case |
|---|---|---|---|
| GET | ✅ | ✅ | Retrieve resource |
| POST | ❌ | ❌ | Create resource |
| PUT | ❌ | ✅ | Replace resource |
| PATCH | ❌ | ❌ | Update resource |
| DELETE | ❌ | ✅ | Delete resource |
Status Codes
// Success
200 OK // GET, PUT, PATCH
201 Created // POST
204 No Content // DELETE
// Client Error
400 Bad Request // Invalid input
401 Unauthorized // Not authenticated
403 Forbidden // Authenticated but not authorized
404 Not Found // Resource doesn't exist
409 Conflict // Duplicate, state conflict
422 Unprocessable // Valid syntax but semantic errors
429 Too Many Requests // Rate limit
// Server Error
500 Internal Server Error
502 Bad Gateway
503 Service Unavailable
Request/Response Design
// Good: Consistent structure
interface ApiResponse<T> {
data: T;
meta?: {
page: number;
pageSize: number;
total: number;
};
errors?: ApiError[];
}
interface ApiError {
code: string;
message: string;
field?: string;
}
// Example
GET /api/users?page=1&pageSize=20
{
"data": [...],
"meta": {
"page": 1,
"pageSize": 20,
"total": 100
}
}