Διαχείριση σφαλμάτων
Το API χρησιμοποιεί συμβατικούς κωδικούς απόκρισης HTTP για να υποδείξει την επιτυχία ή την αποτυχία αιτημάτων. Αυτή η σελίδα τεκμηριώνει τις μορφές σφαλμάτων και τις στρατηγικές χειρισμού.
Κωδικοί κατάστασης HTTP
Κωδικοί επιτυχίας
| Code | Description |
|---|---|
| 200 | Το αίτημα πέτυχε. Το σώμα της απόκρισης περιέχει τα ζητούμενα δεδομένα. |
| 201 | Η δημιουργία του πόρου ολοκληρώθηκε με επιτυχία. |
Κωδικοί Σφάλματος
| Code | Description |
|---|---|
| 400 | Κακό αίτημα - Μη έγκυρες παράμετροι ή ακατάλληλο σώμα αιτήματος |
| 401 | Μη εξουσιοδοτημένο - Λείπει ή μη έγκυρο κλειδί API |
| 403 | Απαγορευμένο - Το κλειδί API δεν διαθέτει τις απαιτούμενες άδειες |
| 404 | Δεν Βρέθηκε - Ο αιτούμενος πόρος δεν υπάρχει |
| 429 | Πολλά Αιτήματα - Υπέρβαση ορίου ρυθμού |
| 500 | Εσωτερικό Σφάλμα Διακομιστή - Παρακαλώ επικοινωνήστε με την υποστήριξη εάν αυτό επιμένει |
Μορφή Απόκρισης Σφάλματος
Όλες οι αποκρίσεις σφάλματος ακολουθούν μια συνεπή δομή JSON με ένα αντικείμενο σφάλματος που περιέχει πεδία κωδικού, μηνύματος και λεπτομερειών.
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or missing API key",
"details": "The X-API-Key header is required for authentication"
}
}Συνήθη Σενάρια Σφάλματος
Μη Έγκυρο Κλειδί API
Αυτό το σφάλμα εμφανίζεται όταν το κλειδί API λείπει, είναι μη έγκυρο ή έχει ανακληθεί. Ελέγξτε ότι συμπεριλαμβάνετε την κεφαλίδα X-API-Key με ένα έγκυρο κλειδί.
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or missing API key",
"details": "The provided API key is invalid or has been revoked"
}
}Ανεπαρκή Δικαιώματα
Αυτό το σφάλμα προκύπτει όταν το κλειδί API σας δεν έχει τις απαιτούμενες άδειες για το ζητούμενο τελικό σημείο. Επικοινωνήστε με τον διαχειριστή σας για να ενημερώσετε τις άδειες του κλειδιού.
{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient permissions",
"details": "This API key does not have the DEVICES_READ permission"
}
}Περιορισμός Ρυθμού
Αυτό το σφάλμα προκύπτει όταν έχετε υπερβεί τον περιορισμό ρυθμού. Η απάντηση περιλαμβάνει πληροφορίες για το πότε μπορείτε να δοκιμάσετε ξανά.
{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests",
"details": "Rate limit exceeded. Try again in 45 seconds"
}
}Βέλτιστες Πρακτικές Χειρισμού Σφαλμάτων
Υλοποιήστε στιβαρό χειρισμό σφαλμάτων στην ενσωμάτωσή σας για να χειριστείτε με χάρη τις αποτυχίες και να επαναδοκιμάσετε αυτόματα προσωρινά σφάλματα.
import requests
import time
API_KEY = "nm_acme_abc123..."
BASE_URL = "https://api.nomid.tech/emm/api/v1"
def make_request(endpoint, max_retries=3):
for attempt in range(max_retries):
response = requests.get(
f"{BASE_URL}{endpoint}",
headers={"X-API-Key": API_KEY}
)
if response.status_code == 200:
return response.json()
if response.status_code == 401:
raise Exception("Invalid API key")
if response.status_code == 403:
raise Exception("Insufficient permissions")
if response.status_code == 429:
# Get retry time from header or use default
retry_after = int(response.headers.get("X-RateLimit-Reset", 60))
wait_time = min(retry_after, 60)
print(f"Rate limited. Waiting {wait_time}s...")
time.sleep(wait_time)
continue
if response.status_code >= 500:
# Exponential backoff for server errors
wait_time = (2 ** attempt) * 1
print(f"Server error. Retrying in {wait_time}s...")
time.sleep(wait_time)
continue
# Unknown error
response.raise_for_status()
raise Exception(f"Failed after {max_retries} retries")Στρατηγική Επαναδοκιμής
Για προσωρινά σφάλματα, υλοποιήστε μια στρατηγική επαναδοκιμής με εκθετική καθυστέρηση:
- Για σφάλματα 429, περιμένετε τον χρόνο που καθορίζεται στην κεφαλίδα X-RateLimit-Reset πριν δοκιμάσετε ξανά.
- Για σφάλματα 5xx, χρησιμοποιήστε εκθετική καθυστέρηση (1 δευτ., 2 δευτ., 4 δευτ., 8 δευτ. ...) με τυχαιότητα.
- Ορίστε έναν μέγιστο αριθμό επαναδοκιμών (π.χ., 3-5 προσπάθειες) για να αποφύγετε ατέρμονους βρόχους.