Sto progettando un REST
API
e ho affrontato una scelta di formattazione dei miei metodi POST
per l'assorbimento dei parametri in forma libera tramite stringa di query o parametri di contenuto:
POST /my/api HTTP/1.0
paramOne=XYZ¶mTwo=ABC
o si aspetti che venga inviato un messaggio di dati formattato in modo rigido (XML / JSON) che incapsula i parametri:
POST /my/api HTTP/1.0
<requestClass>
<paramOne>XYZ</paramOne>
<paramTwo>ABC</paramTwo>
</requestClass>
Ho una preferenza per il secondo approccio perché è più pulito (ovvero un singolo argomento di input a livello di codice rispetto a uno multiplo, oltre alla convalida del formato di base) ed è anche più adatto alla gerarchia dei dati (ad esempio se paramTwo
ha avuto entità che, sebbene non siano impossibili, non sarebbero così semplici da implementare nell'approccio del parametro query / form):
<requestClass>
<paramOne>XYZ</paramOne>
<paramTwo>
<subOne>1</subOne>
<subTwo>2</subTwo>
</paramTwo>
</requestClass>
Quindi, la mia domanda è, oltre alle preferenze di stile, ci sono altre considerazioni nel decidere se un metodo REST POST debba prendere i parametri o un singolo messaggio incapsulante? Ci sono delle linee guida di base che si avvicinano all'attuazione a seconda di diversi fattori o ambiente? Ad esempio, un approccio presenta più vulnerabilità di sicurezza rispetto agli altri (ho un accenno non perché sia il contenuto che la stringa di interrogazione possono essere annusati con altrettanta facilità e, nel caso di HTTPS, non importa) ecc. ?
Se ciò è importante, i miei servizi sono scritti in Java
e forniti tramite Apache CXF
in esecuzione in Tomcat 7
.