Tutti i metodi HTTP sono idempotenti?
sobes.tech AI
Risposta dell'AI
No, non tutti i metodi HTTP sono idempotenti.
L'idempotenza significa che se si effettua la stessa richiesta più volte con gli stessi parametri, il risultato sul lato server non cambierà dopo la prima esecuzione riuscita.
I principali metodi HTTP e la loro idempotenza:
| Metodo | È idempotente? | Scopo |
|---|---|---|
GET |
Sì | Ottenere dati |
HEAD |
Sì | Ottenere intestazioni di risposta |
PUT |
Sì | Creare o sostituire completamente una risorsa |
DELETE |
Sì | Eliminare una risorsa |
POST |
No | Inviare dati per creare una risorsa o eseguire un'azione |
PATCH |
No | Aggiornamento parziale di una risorsa |
POST e PATCH non sono idempotenti perché ogni loro esecuzione può portare alla creazione di una nuova risorsa o alla modifica dello stato della risorsa a seconda dell'implementazione, cosa che non è univoca dopo la prima esecuzione riuscita. Ad esempio, eseguire più volte una richiesta POST per creare un utente di solito porta alla creazione di più utenti.
Esempio di POST non idempotente:
{
"username": "testuser"
}
Inviare questa richiesta POST può creare un nuovo utente con username: "testuser" ad ogni chiamata.
Esempio di PUT idempotente:
{
"id": 123,
"status": "completed"
}
Inviare questa richiesta PUT alla risorsa con ID 123 imposterà il suo stato su "completed". La ripetizione non cambierà lo stato se è già "completed".