POST
Metodo HTTP
Specifica del metodo HTTP POST
Il metodo POST richiede che la risorsa di destinazione elabori la rappresentazione racchiusa nella richiesta secondo la semantica specifica della risorsa stessa. Ad esempio, POST è utilizzato per le seguenti funzioni (tra le altre):
- Fornire un blocco di dati, come i campi inseriti in un modulo HTML, a un processo di gestione dei dati;
- Porre un messaggio a una bacheca, a un newsgroup, a una mailing list, a un blog o a un gruppo simile di articoli;
- Creare una nuova risorsa che deve ancora essere identificata dal server di origine; e
- Applicare dati alla rappresentazione esistente di una risorsa.
Un server di origine indica la semantica della risposta scegliendo un codice di stato appropriato a seconda del risultato dell'elaborazione della richiesta POST; quasi tutti i codici di stato definiti da questa specifica possono essere ricevuti in una risposta al POST (le eccezioni sono 206 (Contenuto parziale), 304 (Non modificato) e 416 (Intervallo non soddisfabile)).
Se una o più risorse sono state create sul server di origine come risultato dell'elaborazione di una richiesta POST, il server di origine DOVREBBE inviare una risposta 201 (Created) contenente un campo di intestazione Location che fornisce un identificatore per la risorsa primaria creata (Sezione 7.1.2) e una rappresentazione che la risorsa primaria è stata creata.
Le risposte alle richieste POST sono memorizzabili nella cache solo se includono informazioni esplicite sulla freschezza (si veda la sezione 4.2.1 di [RFC7234]). Tuttavia, la cache delle richieste POST non è ampiamente implementata. Nei casi in cui un server di origine desideri che il client sia in grado di memorizzare nella cache il risultato di un POST in modo che possa essere riutilizzato da un GET successivo, il server di origine Può inviare una risposta 200 (OK) contenente il risultato e un campo di intestazione Content-Location con lo stesso valore dell'URI effettivo della richiesta POST (Sezione 3.1.4.2).Se il risultato dell'elaborazione di un POST equivale a una rappresentazione di una risorsa esistente, un server di origine può reindirizzare l'interprete a tale risorsa inviando una risposta 303 (Vedi altro) con l'identificatore della risorsa esistente nel campo Location. Questo ha il vantaggio di fornire all'interprete un identificatore di risorsa e di trasferire la rappresentazione attraverso un metodo più adatto alla cache condivisa, anche se al costo di una richiesta aggiuntiva se l'interprete non ha già la rappresentazione nella cache.
Descrizione del metodo POST
Esempio per il metodo HTTP POST
POST /data HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537
Accept: application/json
Accept-Language: de-DE,de;q=0.5
Content-Type: application/json
Content-Length: 100
Connection: keep-alive
Request body:
{
"key": "value",
"foo": "bar"
}
Content-Type: application/json
Date: Mon, 31 July 2023 14:58:12 GMT
Server: Apache/2.4.7 (Ubuntu)
Cache-Control: no-cache
Location: http://api.example.com/data/123
Response body:
{
"status": "success",
"id": 123
}