Glossario · Testing delle API
Status code HTTP (codice di stato)
In inglese: HTTP status code
Detto anche: codici di stato HTTP, status code, codice di risposta, codici di risposta
Definizione
Il numero di tre cifre presente in ogni risposta HTTP che indica se la richiesta è riuscita, è stata reindirizzata o è fallita per colpa del client o del server.
Uno status code HTTP (codice di stato) è la risposta sintetica del server a una richiesta. La prima cifra indica la classe: 1xx informativa, 2xx successo, 3xx reindirizzamento, 4xx errore del client (la richiesta era sbagliata) e 5xx errore del server (la richiesta poteva anche essere corretta, ma il server ha fallito). Verificare lo status code esatto è di solito il primo controllo in qualsiasi test di API.
I codici che i tester usano di più
| Codice | Significato | Uso tipico |
|---|---|---|
200 OK |
Successo con un body | GET, o un aggiornamento che restituisce la risorsa |
201 Created |
È stata creata una risorsa | POST, con un header Location |
204 No Content |
Successo, nessun body | DELETE, alcune PUT |
301 / 302 / 304 |
Spostato, trovato altrove, non modificato | Redirect e cache |
400 Bad Request |
Richiesta malformata o non valida | JSON rotto, tipi errati |
401 Unauthorized |
Non autenticato | Token mancante, scaduto o non valido |
403 Forbidden |
Autenticato ma non autorizzato | Utente valido, ruolo sbagliato |
404 Not Found |
Risorsa inesistente | Id sconosciuto, o per nascondere una risorsa vietata |
409 Conflict |
In conflitto con lo stato attuale | Email duplicata, conflitto di versione |
422 Unprocessable Content |
Ben formata ma non supera la validazione | Violazioni delle regole di business |
429 Too Many Requests |
Rate limit superato | Spesso con Retry-After |
500 / 502 / 503 / 504 |
Errore del server, bad gateway, non disponibile, timeout del gateway | Bug e infrastruttura |
401 e 403 a confronto
Nonostante il nome, 401 Unauthorized riguarda l’autenticazione: il server non sa chi sei. La soluzione è effettuare il login o inviare un token valido, e la risposta dovrebbe includere un header WWW-Authenticate. 403 Forbidden riguarda l’autorizzazione: il server sa chi sei e non ti è permesso fare quella cosa. Rifare il login non serve. Una suite di test dovrebbe coprire entrambi i casi: nessun token, un token scaduto e un token valido per un utente senza i permessi corretti.
Errori comuni
- Controllare solo il 200. La maggior parte dei difetti si trova nei percorsi di errore. Un input non valido dovrebbe ricevere un
4xx; un500indica un input non gestito e merita una segnalazione di bug. - Errori con status 200. Un messaggio di errore nel body di un
200manda in tilt client e monitoraggio. - Convenzioni incoerenti. Alcune API usano
400per tutti gli input errati, altre riservano422agli errori di validazione. Vanno bene entrambe; il bug è mescolarle all’interno della stessa API.