Errori & Troubleshooting
Questa sezione descrive come Homsai restituisce gli errori dalle API, quali codici HTTP vengono usati più spesso e come interpretarli lato client.
Overview
Quando una richiesta non va a buon fine, il backend Homsai:
- utilizza codici HTTP standard per distinguere errori client (4xx) da errori server (5xx);
- restituisce un payload JSON strutturato con informazioni sull’errore;
- usa messaggi tecnici ma leggibili per facilitare il debugging lato client.
In questa guida vedrai:
Struttura della risposta di errore
Gli errori vengono restituiti in formato JSON con una struttura standard, ad esempio:
{
"timestamp": "2025-12-12T10:45:22Z",
"status": 403,
"error": "Forbidden",
"message": "Permission PLANTS READ required",
"path": "/plants"
}
Campi principali:
timestamp: data e ora in cui si è verificato l’errore.status: codice HTTP (es. 400, 401, 403, 404, 500).error: descrizione sintetica del tipo di errore (es.Bad Request,Unauthorized,Forbidden).message: dettaglio leggibile pensato per sviluppatori, che spiega il motivo dell’errore (permesso mancante, parametro non valido, ecc.).path: endpoint invocato.
Lato client è buona pratica:
- loggare l’intero payload di errore in ambienti di sviluppo;
- mostrare all’utente finale messaggi derivati da
messagema filtrati/contestualizzati.
Codici HTTP comuni
400 – Bad Request
La richiesta è formalmente errata o mancano parametri obbligatori.
Esempi:
- body JSON non valido;
- parametri
startDate/endDatecon formato errato; - valori fuori range per certi campi.
Cosa fare lato client:
correggere la richiesta (formato parametri, body) prima di riprovare.
401 – Unauthorized
Il token JWT è mancante, scaduto o non valido.
Esempi:
- header
Authorizationassente; accessTokenscaduto o con firma non valida.
Cosa fare lato client:
- se disponibile un
refreshToken, richiamareGET /auth/tokenper ottenere un nuovo access token; - altrimenti, ripetere il login (
POST /auth/login).
403 – Forbidden
Il token è valido, ma l’utente:
- non ha i permessi necessari (es. manca
PLANTS READ); - oppure non è owner del plant richiesto.
Cosa fare lato client:
- verificare i ruoli/permessi dell’utente nell’interfaccia amministrativa;
- mostrare un messaggio chiaro (“non hai i permessi per visualizzare questo impianto”).
404 – Not Found
La risorsa richiesta non esiste o non è accessibile al chiamante.
Esempi:
plantUuidinesistente o non visibile all’utente;deviceUuidosensorUuiderrati.
Cosa fare lato client:
- controllare che gli ID utilizzati siano corretti;
- gestire il caso “risorsa non trovata” nell’interfaccia utente (es. reindirizzare alla lista).
409 – Conflict
Si verifica un conflitto di stato nel backend.
Esempi (a titolo indicativo):
- tentativo di creare una risorsa con identificativo già esistente;
- operazioni non consentite a causa di vincoli di dominio (es. cancellare un plant in uso da processi attivi).
Cosa fare lato client:
- mostrare un messaggio che suggerisca di cambiare i dati o riprovare in un altro momento;
- offrire azioni correttive (es. modificare un identificativo).
422 – Unprocessable Entity
I dati sono sintatticamente corretti ma semanticamente non accettabili.
Esempi:
- combinazione di parametri che non ha senso per il dominio (date invertite, plant non compatibile con certo tipo di sensore);
- violazioni di regole di validazione più complesse.
Cosa fare lato client:
- usare
messageper mostrare un feedback accurato; - validare quanto possibile i dati già lato front‑end.
500 – Internal Server Error
Errore interno imprevisto lato server.
Non è imputabile alla richiesta (se ben formata): indica un problema infrastrutturale o un bug.
Cosa fare lato client:
- mostrare un messaggio generico di errore temporaneo;
- invitare l’utente a riprovare più tardi;
- se l’errore è persistente, segnalarlo al supporto Homsai con dettagli (timestamp, path, status, message).
Casi tipici e come gestirli
-
Token scaduto
- Sintomi:
401 Unauthorizedcon messaggio che indica token non valido/scaduto. - Azione client:
- usare
refreshTokenper ottenere nuovoaccessToken; - in caso di fallimento, forzare nuovamente il login.
- usare
- Sintomi:
-
Permesso mancante
- Sintomi:
403 Forbidden, messaggi tipo “Permission X required”. - Azione client:
- nascondere o disabilitare funzioni non autorizzate nell’UI;
- mostrare un messaggio chiaro senza dettagli tecnici superflui.
- Sintomi:
-
Plant non accessibile
- Sintomi:
404 Not Foundo403 Forbiddenper un certoplantUuid. - Azione client:
- verificare che l’utente sia owner o abbia accesso a quel plant;
- aggiornare la lista impianti mostrata lato UI.
- Sintomi:
-
Parametri data errati
- Sintomi:
400 Bad Requestcon messaggi relativi astartDate,endDateo formato data. - Azione client:
- applicare controlli di formato e range lato front‑end;
- guidare l’utente nella selezione di date valide tramite date‑picker.
- Sintomi:
Una gestione coerente di questi casi nel client migliora notevolmente l’esperienza di integrazione e riduce il carico di supporto.