Skip to content

Gestione Errori API

L'API restituisce errori in formato JSON consistente.

Formato Errore

json
{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Descrizione leggibile",
    "details": { ... }
  }
}

Codici HTTP

CodiceSignificatoQuando
200OKRichiesta riuscita
201CreatedRisorsa creata
204No ContentEliminazione riuscita
400Bad RequestRichiesta malformata
401UnauthorizedAutenticazione fallita
403ForbiddenPermessi insufficienti
404Not FoundRisorsa non trovata
422UnprocessableValidazione fallita
429Too Many RequestsRate limit superato
500Server ErrorErrore interno

Codici Errore

Autenticazione

CodiceDescrizione
UNAUTHORIZEDAPI Key mancante o non valida
FORBIDDENPermessi insufficienti
TOKEN_EXPIREDAPI Key scaduta

Validazione

CodiceDescrizione
VALIDATION_ERRORDati non validi
MISSING_FIELDCampo obbligatorio mancante
INVALID_FORMATFormato non corretto

Risorse

CodiceDescrizione
NOT_FOUNDRisorsa non trovata
ALREADY_EXISTSDuplicato
CONFLICTConflitto di stato

Sistema

CodiceDescrizione
RATE_LIMIT_EXCEEDEDTroppe richieste
INTERNAL_ERRORErrore del server

Esempi

Validazione

json
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "I dati forniti non sono validi",
    "details": {
      "email": ["Il formato email non è valido"],
      "first_name": ["Il campo nome è obbligatorio"]
    }
  }
}

Non Trovato

json
{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Contatto con ID 999 non trovato"
  }
}

Gestire gli Errori

javascript
async function apiCall(url, options) {
  const response = await fetch(url, options);
  const data = await response.json();
  
  if (!data.success) {
    switch (data.error.code) {
      case 'UNAUTHORIZED':
        // Riautentica
        break;
      case 'VALIDATION_ERROR':
        // Mostra errori di validazione
        console.log(data.error.details);
        break;
      case 'RATE_LIMIT_EXCEEDED':
        // Attendi e riprova
        break;
      default:
        // Errore generico
        console.error(data.error.message);
    }
    throw new Error(data.error.message);
  }
  
  return data.data;
}

TIP

Logga sempre gli errori con il codice completo per facilitare il debug.

Realizzato con ❤️ da DScom