Riferimento API›Gestione degli errori
Gestione degli errori
Formato errore
La maggior parte degli errori API restituiscono un oggetto JSON con una singola stringa error:
{ "error": "Monitor not found" }
Alcuni errori includono campi aggiuntivi:
Errori di limite di velocità (429) includono un campo retry_after_seconds:
{
"error": "Too many requests",
"retry_after_seconds": 60
}
Errori token OAuth seguono RFC 6749 e includono error_description:
{
"error": "invalid_client",
"error_description": "Invalid client credentials"
}
Codici di stato HTTP
| Stato | Significato |
|---|---|
400 | Richiesta errata: campi mancanti o non validi |
401 | Non autenticato: token mancante, non valido o scaduto |
403 | Vietato: token valido ma autorizzazioni insufficienti o limite del piano raggiunto |
404 | Risorsa non trovata |
429 | Tariffa limitata: fai marcia indietro e riprova |
500 | Errore interno del server: temporaneo, riprova con backoff |
503 | Servizio non disponibile: la dipendenza upstream (ad esempio il provider OAuth) è inattiva |
Messaggi di errore comuni
| Messaggio | Stato | Cosa è successo |
|---|---|---|
"Authorization header missing or invalid" | 401 | Nessuna intestazione Authorization: Bearer <token> |
"Invalid or expired token" | 401 | Il token è scaduto o è stato manomesso: autenticarsi nuovamente |
"Invalid API key" | 401 | La chiave API utilizzata per generare questo token è stata revocata |
"Monitor not found" | 404 | Nel tuo team non esiste alcun monitor con questo ID |
"Your plan allows a maximum of N monitors" | 403 | Aggiorna il tuo piano per creare più monitor |
"Too many requests" | 429 | Hai superato il limite di tariffa: consulta il campo retry_after_seconds |
"Internal server error" | 500 | Errore temporaneo del server: riprova con backoff esponenziale |
Gestione degli errori nel codice
const res = await fetch('https://www.diffhook.com/api/monitors', {
method: 'POST',
headers: {
Authorization: `Bearer ${accessToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(payload),
})
if (!res.ok) {
const body = await res.json()
const message = body.error
if (res.status === 429) {
const retryAfter = body.retry_after_seconds ?? 60
// wait and retry
} else if (res.status === 401) {
// re-authenticate with POST /api/oauth/token
} else {
console.error(message)
}
}
Errori 5xx
Gli errori del server sono temporanei. Riprova con un backoff esponenziale: la maggior parte si risolve in pochi secondi. Se un 500 o 503 persiste per più di qualche minuto, controlla la nostra pagina di stato o invia un'e-mail a support@diffhook.com.