Se cats/123
rappresenta una risorsa poi pensare in questo modo: che la risorsa può avere molti stati (mangiare, camminare, dormire, saltare, pissing, ...). Quando si progetta un'API utilizzando lo stile architettonico REST, si desidera consentire a un'applicazione client di effettuare richieste consentite alla risorsa che modificherà il suo stato.
Nel contesto di cats/123
, è possibile eseguire questa operazione attraverso una serie di richieste POST che causeranno la modifica dello stato della risorsa. Sfruttando la capacità di hypermedia in REST è possibile creare un processo come le richieste e le risposte mostrate di seguito. Si noti che i collegamenti consentiti cambiano in risposta al POST. Inoltre, l'applicazione client dovrebbe codificare le proprietà contenute nell'array Collegamenti e non l'URI effettivo contenuto nelle proprietà Href.
Richiesta:
GET cats/123
Risposta:
{
"Color" : "black",
"Age" : "2",
"Links":[
{
"Food":"kibbles",
"Method":"POST",
"Href":"http://cats/123",
"Title":"Feed the cat"
},
{
"Scare":"yell real loud",
"Method":"POST",
"Href":"http://cats/123",
"Title":"Scare the cat"
}]
}
Richiesta:
POST cats/123
{
"Food":"kibbles"
}
Risposta:
{
"Color" : "black",
"Age" : "2",
"Tummy" : "full"
"Links":[
{
"Sleep":"lap",
"Method":"POST",
"Href":"http://cats/123",
"Title":"Pet the cat"
},
{
"Scare":"yell real loud",
"Method":"POST",
"Href":"http://cats/123",
"Title":"Scare the cat"
}]
}
fonte
2012-04-23 14:07:59
+1. Grazie. Ma ho pensato che dovremmo usare PUT anziché POST per aggiornare una risorsa? Ho letto che il POST dovrebbe essere usato per la creazione? – SiN
Sfortunatamente, le discussioni ("argomenti") sullo stile architettonico REST ruotano attorno alla comprensione delle specifiche HTTP e delle definizioni che contiene. In breve, la [specifica HTTP] (http://www.ietf.org/rfc/rfc2616.txt) dice che il metodo PUT è un modo di inviare la * intera * rappresentazione della risorsa (un'entità aggiornata dal client) a il server in modo che possa sostituire la rappresentazione corrente della risorsa presumendo che il client abbia la versione più recente. Nella domanda, la tua "azione" richiede una transizione di stato anziché una sostituzione all'ingrosso della risorsa con una versione aggiornata. –
{Ran out of space :)} Inoltre, il POST è un modo accettato di far passare una rappresentazione di risorse da uno stato a un altro. –