Tài Liệu API - Tổng Quan¶
Chào mừng đến tài liệu API của GreenMap-Backend!
GreenMap-Backend API Là Gì?¶
GreenMap-Backend cung cấp REST API để: - Lấy dữ liệu sensors (AQI, thời tiết) - Quản lý người dùng (đăng ký, đăng nhập) - Tạo và quản lý báo cáo sự cố - Tương tác với Context Broker (Orion-LD) - Quản lý các địa điểm (locations)
URL Cơ Sở API¶
Xác Thực¶
API sử dụng OAuth2 và JWT tokens:
1. Đăng Nhập (Lấy Token)¶
POST /login
Content-Type: application/json
{
"email": "user@example.com",
"password": "password123"
}
Response:
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "bearer",
"user": {
"id": "123",
"email": "user@example.com",
"role": "user"
}
}
2. Sử Dụng Token¶
Bao gồm token trong header:
Giới Hạn Tỷ Lệ¶
- Public endpoints: 100 requests/hour
- Authenticated endpoints: 1000 requests/hour
- Reset: Mỗi giờ UTC
Mã Trạng Thái HTTP¶
| Mã | Ý Nghĩa |
|---|---|
| 200 | OK - Thành công |
| 201 | Created - Tạo mới thành công |
| 400 | Bad Request - Yêu cầu không hợp lệ |
| 401 | Unauthorized - Cần xác thực |
| 403 | Forbidden - Không có quyền |
| 404 | Not Found - Không tìm thấy |
| 500 | Internal Server Error - Lỗi server |
Cấu Trúc Phản Hồi¶
Thành Công¶
Lỗi¶
Các Endpoints Chính¶
Tài Khoản & Xác Thực¶
POST /auth/register- Đăng ký người dùng mớiPOST /auth/login- Đăng nhậpPOST /auth/logout- Đăng xuấtGET /auth/me- Lấy thông tin người dùng hiện tạiPUT /auth/profile- Cập nhật profile
Locations (Địa điểm)¶
GET /locations- Lấy danh sách địa điểmGET /locations/{id}- Lấy chi tiết địa điểmPOST /locations- Tạo địa điểm mớiPUT /locations/{id}- Cập nhật địa điểmDELETE /locations/{id}- Xóa địa điểm
Sensors (Cảm Biến)¶
GET /sensors- Lấy tất cả sensorsGET /sensors/{id}- Chi tiết sensorGET /sensors/{id}/aqi- Dữ liệu AQI hiện tạiGET /sensors/{id}/history- Lịch sử AQI
Reports (Báo Cáo)¶
GET /reports- Danh sách báo cáoPOST /reports- Tạo báo cáo mớiGET /reports/{id}- Chi tiết báo cáoPUT /reports/{id}- Cập nhật báo cáoDELETE /reports/{id}- Xóa báo cáo
Weather (Thời Tiết)¶
GET /weather- Dữ liệu thời tiết hiện tạiGET /weather/forecast- Dự báo thời tiết
Context Broker (Orion-LD)¶
GET /context/entities- Lấy các entitiesGET /context/entities/{id}- Chi tiết entityPOST /context/entities- Tạo entity mới
Ví Dụ Sử Dụng¶
Lấy Danh Sách Sensors¶
Response:
{
"success": true,
"data": [
{
"id": "sensor_001",
"name": "Sensor District 1",
"location": {
"lat": 10.7769,
"lng": 106.6296
},
"aqi": 45,
"lastUpdate": "2024-01-15T10:30:00Z"
}
]
}
Tạo Báo Cáo¶
curl -X POST "http://localhost:8000/reports" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Air Pollution Alert",
"description": "High pollution detected",
"location": {
"lat": 10.7769,
"lng": 106.6296
},
"category": "pollution",
"severity": "high"
}'
Công Cụ Thử Nghiệm¶
Swagger UI¶
Khi Backend chạy, truy cập:
Giao diện Swagger cho phép bạn: - Xem tất cả endpoints - Kiểm tra yêu cầu/phản hồi - Thử trực tiếp các API calls
API Testing Tools¶
- Postman - GUI client
- curl - Command line
- Thunder Client - VS Code extension
- REST Client - VS Code extension
Pagination¶
Các endpoints danh sách hỗ trợ pagination:
Query Parameters:
- page - Trang hiện tại (mặc định: 1)
- limit - Số mục mỗi trang (mặc định: 20)
- sort - Trường để sort
- order - asc hoặc desc
Caching¶
API sử dụng HTTP caching headers:
Bạn nên respect các headers này trong client.
Webhooks (Tùy Chọn)¶
Hiện tại không hỗ trợ webhooks, nhưng có thể thêm vào tương lai.
Lỗi Thường Gặp¶
401 Unauthorized¶
- Token hết hạn → Đăng nhập lại
- Token không hợp lệ → Kiểm tra syntax
- Thiếu header Authorization → Thêm header
403 Forbidden¶
- Không có quyền truy cập → Kiểm tra role
404 Not Found¶
- Endpoint không tồn tại → Kiểm tra URL
- Resource không tồn tại → Kiểm tra ID
429 Too Many Requests¶
- Vượt giới hạn tỷ lệ → Chờ trước khi request lại
Các Tài Liệu Tiếp Theo¶
- Endpoints API Endpoints - Chi tiết mỗi endpoint
- Backend Repository - GitHub repo
- Contributing - Đóng góp code
Liên Hệ & Hỗ Trợ¶
- GitHub Issues: Report bugs tại GitHub repos
- Discussions: Thảo luận trên GitHub
- Documentation: Xem đầy đủ docs tại đây
Sẵn sàng bắt đầu với API? Hãy kiểm tra Endpoints! 🚀