Sobes.tech
Middle

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 Ottenere dati
HEAD Ottenere intestazioni di risposta
PUT Creare o sostituire completamente una risorsa
DELETE 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".