Riferimento rapido

Cheat Sheet sulle API RESTful

Guida rapida per le API RESTful: semantica dei metodi HTTP, codici di stato, strutture di errore JSON, header e idempotenza.

· Pubblicato

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'header Location indica l'URI).
  • 202 Accepted: Richiesta accettata per elaborazione asincrona.
  • 204 No Content: Azione riuscita, nessun corpo restituito (comune con DELETE).

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"
      }
    ]
  }
}

Riferimenti

Argomenti correlati