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à?
risposta
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.
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.
+1 Hmm buono a sapersi. – Ben
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?
Touch/finger è un'illustrazione da manuale di un'azione non idempotente che è intrinsecamente senza contenuto. –
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.
- 1. È considerata una cattiva pratica utilizzare attributi HTML non standard?
- 2. Mixing GET con POST - è una cattiva pratica?
- 3. È una cattiva pratica scrivere su $ _POST?
- 4. rel = "tooltip", è una cattiva pratica?
- 5. È una cattiva pratica usare campi nascosti?
- 6. Perché è una cattiva pratica -compile (export_all)?
- 7. È una cattiva pratica usare gli oggetti entità su tutti i livelli di un'applicazione web?
- 8. È in genere una cattiva pratica avere molti parametri "initWith"?
- 9. È considerata una cattiva forma eseguire una funzione all'interno di un'istruzione condizionale?
- 10. È typedef all'interno di un corpo di una funzione una cattiva pratica di programmazione?
- 11. È una cattiva pratica usare le funzioni in OOP?
- 12. È una cattiva pratica utilizzare il keystore standard Java
- 13. Webpack 2 - è una cattiva pratica usare il pacchetto "fornitori"?
- 14. Il riferimento circolare tra gli oggetti è una cattiva pratica?
- 15. È una cattiva pratica aggiungere funzionalità alle entità EF usando classi parziali?
- 16. È una cattiva pratica inviare HTML su una connessione WebSocket
- 17. È una cattiva pratica scavalcare le variabili LESS?
- 18. Sta usando "type" come nome di attributo una cattiva pratica?
- 19. È una cattiva pratica restituire viste parziali contenenti javascript?
- 20. Gli argomenti NULL sono una cattiva pratica?
- 21. È una cattiva pratica utilizzare un parametro GET (in URL) senza valore?
- 22. È una cattiva pratica usare Reflection in Unit testing?
- 23. È una cattiva pratica utilizzare molti viewmodels in asp.net mvc
- 24. La sottoclasse in Objective-C è una cattiva pratica?
- 25. La ricerca pigra in Rails I18n è una cattiva pratica?
- 26. È una cattiva pratica digitare typedef un puntatore intelligente?
- 27. È una cattiva pratica aggiungere proprietà ai nodi DOM?
- 28. Codice di stato HTTP per il corpo POST non valido
- 29. L'uso del pacchetto predefinito di Java è una cattiva pratica?
- 30. Implementazione del servizio Windows IDisposable - È una cattiva pratica?
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. –