2010-11-16 12 views
84

Ho bisogno di invocare un processo che non richiede alcun input da parte dell'utente, solo un trigger. Ho intenzione di usare POST/uri senza un corpo per attivare il processo. Voglio sapere se questo è considerato negativo dalle prospettive HTTP e REST?È considerata una cattiva pratica eseguire il POST HTTP senza corpo entità?

+2

Grazie a tutti per i vostri suggerimenti. Anche se tutti hanno dato un suggerimento simile, vale a dire che va bene al POST con contenuto zero, sto selezionando la risposta di Darrel come corretta a causa del collegamento alla discussione IETF. La discussione chiarisce molto. –

risposta

67

Ho chiesto this question al gruppo di lavoro HTTP IETF alcuni mesi fa. La risposta breve è sì sì, ma suggerisco di leggere il thread per maggiori dettagli.

36

L'utilizzo di un POST anziché di un GET è perfettamente ragionevole, poiché indica anche al server (e ai gateway lungo il percorso) di non restituire una risposta memorizzata nella cache.

+4

+1 Hmm buono a sapersi. – Ben

9

Se si utilizza POST/uri senza un corpo, è qualcosa come utilizzare una funzione che non accetta argomenti .e.g int post (void); quindi è ragionevole avere una funzione per la classe di risorse che può cambiare lo stato di un oggetto senza avere un argomento. Se pensi di implementare la funzione di tocco Unix per un URI, non è una buona scelta?

+1

Touch/finger è un'illustrazione da manuale di un'azione non idempotente che è intrinsecamente senza contenuto. –

20

POST è completamente OK. Nella differenza di GET con il POST si sta modificando lo stato del sistema (molto probabilmente il trigger sta "facendo" qualcosa e modificando i dati).

Ho usato POST già senza carico utile e "si sente" OK. Una cosa che dovresti fare quando usi POST senza payload: Passa l'intestazione Content-Length: 0. Ricordo i problemi con alcuni proxy quando io api-client non l'ho passato.

Problemi correlati