4.6. Utilizzo dei codici di stato HTTP
4.6. Utilizzo dei codici di stato HTTP
Le applicazioni che utilizzano HTTP DEVONO utilizzare solo codici di stato HTTP registrati. DOVREBBERO utilizzare il codice di stato più specifico applicabile, sebbene non siano limitate a quelli definiti in [HTTP]; altri codici di stato possono essere utilizzati purché siano registrati nel registro "HTTP Status Codes".
Quando si specifica come vengono utilizzati i codici di stato, le applicazioni DOVREBBERO concentrarsi sulla loro semantica generica piuttosto che sul loro significato specifico in un particolare contesto. Ad esempio, è appropriato dire:
Se la richiesta ha successo, il server invia una risposta
200 OK.
ma non:
Il server invia una risposta
200 OKquando l'utente è autenticato e autorizzato ad accedere alla risorsa.
Quest'ultimo è troppo specifico perché confonde diverse cose: successo, autenticazione e autorizzazione. Una dichiarazione più appropriata sarebbe:
Se la richiesta ha successo, il server invia una risposta
200 OK. Se è richiesta l'autenticazione ma non viene fornita, il server invia una risposta401 Unauthorized. Se il client non è autorizzato ad accedere alla risorsa, il server invia una risposta403 Forbidden.
Le applicazioni NON DOVREBBERO definire nuovi codici di stato. Nei rari casi in cui un nuovo codice di stato è veramente necessario, DEVE essere registrato seguendo la procedura in [HTTP] Sezione 16.2.
Quando si sceglie un codice di stato, il principio generale è selezionare il più specifico che si applica. Il codice di stato dovrebbe trasmettere la ragione principale della risposta.
Ad esempio, se una richiesta fallisce perché la risorsa non esiste, 404 Not Found è appropriato. Se fallisce perché il client non è autorizzato ad accedervi, 403 Forbidden è appropriato, anche se la risorsa potrebbe non esistere.
Le applicazioni DOVREBBERO utilizzare i seguenti codici di stato in modo appropriato:
-
200 OKper richieste riuscite in cui la risposta contiene una rappresentazione. -
201 Createdper richieste riuscite che risultano nella creazione di una nuova risorsa. -
202 Acceptedper richieste che sono state accettate per l'elaborazione ma dove l'elaborazione non è stata completata. -
204 No Contentper richieste riuscite dove non c'è rappresentazione da inviare. -
301 Moved Permanentlyo308 Permanent Redirectper risorse che si sono spostate permanentemente. -
302 Foundo307 Temporary Redirectper risorse che si sono spostate temporaneamente. -
304 Not Modifiedper richieste condizionali dove la risorsa non è cambiata. -
400 Bad Requestper richieste malformate. -
401 Unauthorizedper richieste che richiedono autenticazione. -
403 Forbiddenper richieste dove il client non è autorizzato. -
404 Not Foundper richieste a risorse non esistenti. -
405 Method Not Allowedper richieste che utilizzano un metodo inappropriato. -
406 Not Acceptablequando il server non può generare una rappresentazione che il client accetterà. -
409 Conflictquando la richiesta è in conflitto con lo stato corrente della risorsa. -
410 Goneper risorse che esistevano ma sono state rimosse permanentemente. -
415 Unsupported Media Typequando ilContent-Typedella richiesta non è supportato. -
500 Internal Server Errorper errori lato server. -
501 Not Implementedquando il server non supporta la funzionalità richiesta. -
503 Service Unavailablequando il server è temporaneamente incapace di gestire la richiesta.