REST (Representational State Transfer) è uno stile architetturale per la progettazione di servizi API web distribuiti su HTTP.
Verbi HTTP e semantica
| Metodo | Azione prevista | Sicuro | Idempotente |
|---|---|---|---|
GET |
Recupera la rappresentazione della risorsa | Sì | Sì |
POST |
Crea una nuova risorsa subordinata | No | No |
PUT |
Sostituisce l'intera rappresentazione della risorsa | No | Sì |
PATCH |
Aggiorna parzialmente le proprietà della risorsa | No | No |
DELETE |
Elimina la risorsa | No | Sì |
HEAD |
Recupera gli header senza corpo della risposta | Sì | Sì |
OPTIONS |
Interroga i metodi HTTP supportati dall'endpoint | Sì | Sì |
Codici di stato HTTP comuni
Successo (2xx)
200 OK: Richiesta riuscita (il corpo contiene la rappresentazione).201 Created: Risorsa creata con successo (l'headerLocationindica l'URI).202 Accepted: Richiesta accettata per elaborazione asincrona.204 No Content: Azione riuscita, nessun corpo restituito (comune conDELETE).
Errori client (4xx)
400 Bad Request: Sintassi errata, parametri non validi o validazione fallita.401 Unauthorized: Autenticazione mancante o non valida.403 Forbidden: L'utente autenticato non dispone dei permessi per la risorsa.404 Not Found: L'URI della risorsa non esiste.409 Conflict: La richiesta è in conflitto con lo stato corrente (es. chiave univoca duplicata).422 Unprocessable Entity: Richiesta ben formata che ha fallito la validazione semantica di dominio.429 Too Many Requests: Limite di frequenza (Rate Limit) superato.
Errori server (5xx)
500 Internal Server Error: Errore generico non gestito lato server.502 Bad Gateway: Il server upstream ha restituito una risposta non valida.503 Service Unavailable: Server sovraccarico o in manutenzione.
Formato standard di errore JSON
{
"error": {
"code": "VALIDATION_ERROR",
"message": "The email address provided is already registered.",
"details": [
{
"field": "email",
"issue": "unique_constraint_violated"
}
]
}
}