I metodi di richiesta HTTP spiegati
HTTP definisce nove metodi di richiesta standard, ma gran parte del traffico quotidiano ne usa solo alcuni. Questa tabella spiega ogni metodo, se è sicuro e idempotente e i codici restituiti da una chiamata riuscita.
| Metodo | Scopo | Sicuro? | Idempotente? | Stato di successo |
|---|---|---|---|---|
| GET | Retrieve a resource | Yes | Yes | 200 OK |
| HEAD | Retrieve headers only, no body | Yes | Yes | 200 OK |
| POST | Create a resource or trigger an action | No | No | 201 Created |
| PUT | Replace a resource entirely | No | Yes | 200 OK / 204 No Content |
| PATCH | Apply a partial update | No | No | 200 OK |
| DELETE | Remove a resource | No | Yes | 200 OK / 204 No Content |
| OPTIONS | CORS preflight; list allowed methods | Yes | Yes | 204 / 200 OK |
| TRACE | Echo the request back for diagnostics | Yes | Yes | 200 OK |
| CONNECT | Open a tunnel, e.g. HTTPS via a proxy | No | No | 200 OK |
Note
- Sicuro significa che il metodo non modifica mai lo stato del server: GET, HEAD, OPTIONS e TRACE sono gli unici sicuri.
- Idempotente significa che ripetere la chiamata produce lo stesso risultato di una sola chiamata: PUT, DELETE e GET lo sono; POST e PATCH no.
- Quando una route non accetta un metodo, il server risponde 405 Method Not Allowed e di solito include l'header Allow.
Domande frequenti
- Qual è la differenza tra GET e POST?
- GET recupera una risorsa senza effetti collaterali e può essere ripetuto in sicurezza; i parametri viaggiano nell'URL. POST crea qualcosa o attiva un'azione, può cambiare lo stato e non va ripetuto alla cieca.
- Cosa significa che un metodo HTTP è sicuro?
- Un metodo sicuro non modifica mai lo stato del server, quindi può essere chiamato senza rischi. GET, HEAD, OPTIONS e TRACE sono sicuri; POST, PUT, PATCH e DELETE no.
- Qual è la differenza tra PUT e PATCH?
- PUT sostituisce l'intera risorsa con ciò che invii; PATCH applica una modifica parziale solo ai campi scelti. PUT è idempotente, ripeterlo dà lo stesso risultato; PATCH in genere non lo è.
- A cosa serve il metodo HEAD?
- HEAD si comporta come GET ma non restituisce il corpo. Serve a verificare se una risorsa esiste, la sua dimensione o le intestazioni, senza scaricare tutto il contenuto.