Should the first call be a GET or a POST?
Dovrebbe essere un GET
.
Il motivo principale è che il client, se sto seguendo correttamente, non sa che sta creando una risorsa né si sta preparando per creare una risorsa.
Il client desidera lo stato corrente della risorsa dal server. Non si sa che questo potrebbe significare creare una risorsa e non gliene frega del fatto che questa è la prima volta che qualcuno ha tentato di ottenere questa risorsa, né che il server deve creare la risorsa alla sua fine (cosa mai significa il contesto del server).
Il client vuole solo lo stato corrente di quella risorsa.
REST non ha nulla a che fare con le operazioni CRUD sul lato server. In realtà il punto di REST è che quei dettagli dovrebbero essere nascosti dal client. Il cliente non si preoccupa affatto di ciò che il server deve fare per riuscire a fornire al cliente una rappresentazione della risorsa. Se il server deve eseguire una grande query SQL in una transazione per creare questa risorsa, al client non interessa.
La cosa da ricordare qui è la direzione del controllo. Il client sta dicendo al server dammi la tua rappresentazione della risorsa foobar
. Questo è ciò che è GET. come fa il server dipende dal server.
Se hai utilizzato POST
o PUT
che è il client che dice "Ecco la mia rappresentazione di foobar
, aggiorna te stesso"
Ma nel tuo scenario il cliente non è responsabile della creazione iniziale di foobar
, il server lo è. Il client vuole solo la rappresentazione del server e non dovrebbe conoscere alcun effetto collaterale di tale operazione.