Thông tin chung
Rate Limiting
API được áp dụng rate limiting để bảo vệ hệ thống.
Configuration
| Parameter | Value | Description |
|---|---|---|
| Limit | 300 requests | Số request tối đa trong window |
| Window | 60 seconds | Cửa sổ thời gian |
| Tracking | Per User | Theo User ID từ JWT token |
| Fallback | IP Address | Nếu không có User ID |
Response Headers
| Header | Type | Description | Example |
|---|---|---|---|
X-RateLimit-Limit | number | Số request tối đa | 300 |
X-RateLimit-Remaining | number | Số request còn lại | 295 |
X-RateLimit-Reset | string | Thời điểm reset (ISO 8601) | 2025-12-15T10:05:00Z |
Error Responses
Not Found - 404
Trường hợp endpoint không tồn tại:
{
"statusCode": 404,
"timestamp": "2025-12-15T03:06:19.777Z",
"path": "/api/v1/attendance",
"errorMessage": "HTTP Exception: 404 - Cannot GET /api/v1/attendance"
}
Unauthorized - 401
Trường hợp API Key không hợp lệ hoặc thiếu:
{
"statusCode": 401,
"timestamp": "2025-12-15T03:11:45.797Z",
"path": "/api/v1/attendance",
"errorMessage": "HTTP Exception: 401 - NO_TOKEN: Access token not found in header"
}
Bad Request - 400
Trường hợp thiếu parameter hoặc validation lỗi:
{
"statusCode": 400,
"timestamp": "2025-12-15T03:12:35.599Z",
"path": "/api/v1/attendance",
"errorMessage": "HTTP Exception: 400 - Bad Request Exception",
"reasons": {
"message": "classId should not be empty"
}
}
Rate Limit Exceeded - 400
Trường hợp vượt quá giới hạn request:
{
"statusCode": 400,
"timestamp": "2025-12-15T03:12:35.599Z",
"path": "/api/v1/attendance",
"errorMessage": "HTTP Exception: 400 - Too many requests. Please try again after 45 seconds."
}
Server Error - 500
Trường hợp lỗi server:
{
"statusCode": 500,
"timestamp": "2025-12-15T03:12:35.599Z",
"path": "/api/v1/attendance",
"errorMessage": "HTTP Exception: 500 - Internal Server error"
}
Lưu ý chung
Lưu ý quan trọng khi tích hợp
- Lấy API Key & APP Key: Liên hệ Trung tâm QLCNTT HUTECH (Email: tt.qlcntt@hutech.edu.vn, Zalo: 0976535298)
- Format Authorization:
Authorization: ApiKey <API_KEY> - Monitor headers: Kiểm tra
X-RateLimit-Remainingsau mỗi request - Implement retry logic: Chờ theo
Retry-Afterheader trước khi thử lại