Skip to main content
Version: Mới nhất

Thông tin chung

Rate Limiting

API được áp dụng rate limiting để bảo vệ hệ thống.

Configuration

ParameterValueDescription
Limit300 requestsSố request tối đa trong window
Window60 secondsCửa sổ thời gian
TrackingPer UserTheo User ID từ JWT token
FallbackIP AddressNếu không có User ID

Response Headers

HeaderTypeDescriptionExample
X-RateLimit-LimitnumberSố request tối đa300
X-RateLimit-RemainingnumberSố request còn lại295
X-RateLimit-ResetstringThờ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-Remaining sau mỗi request
  • Implement retry logic: Chờ theo Retry-After header trước khi thử lại