Sto progettando un'API per andare su HTTP e mi chiedo se usare il comando HTTP POST, ma con solo i parametri di query URL e nessun corpo di richiesta, sia un buon modo di procedere.
considerazioni:
- "Good Web design" richiede che le azioni non idempotenti vengano inviate tramite POST. Questa è un'azione non idempotente.
- È più semplice sviluppare ed eseguire il debug di questa app quando i parametri della richiesta sono presenti nell'URL.
- L'API non è destinata ad un uso diffuso.
- Sembra che fare una richiesta POST senza body richiederà un po 'più di lavoro, ad esempio
Content-Length: 0
un'intestazione deve essere aggiunta esplicitamente. - Mi sembra anche che un POST senza body sia un po 'contrario alle aspettative della maggior parte dei framework HTTP e degli sviluppatori.
Ci sono più insidie o vantaggi nell'invio di parametri su una richiesta POST tramite la query URL anziché il corpo della richiesta?
Modifica: il motivo per cui questo è in considerazione è che le operazioni non sono idempotenti e hanno effetti collaterali diversi dal recupero. Vedi le specifiche HTTP :
In particolare, è stata stabilita la convenzione che i metodi GET e HEAD NON DOVREBBERO avere il significato di intraprendere un'azione diversa dal recupero. Questi metodi dovrebbero essere considerati "sicuri". Ciò consente agli interpreti utenti di rappresentare altri metodi, come POST, PUT e DELETE, in modo speciale, in modo che l'utente venga a conoscenza del fatto che viene richiesta un'azione potenzialmente non sicura.
...
I metodi possono anche avere la proprietà di "idempotenza" in quanto (a parte errori o problemi di scadenza), gli effetti collaterali di richieste identiche N> 0 sono gli stessi di una singola richiesta. I metodi GET, HEAD, PUT e DELETE condividono questa proprietà. Inoltre, i metodi OPTIONS e TRACE NON DOVREBBERO avere effetti collaterali, e quindi sono intrinsecamente idempotenti.