sto usando Primavera Boot (ultima versione, 1.3.6 ) e voglio creare un endpoint REST che accetta un mucchio di argomenti e un oggetto JSON. Qualcosa di simile:Come inviare un payload JSON a una @RequestParam in Spring MVC
curl -X POST http://localhost:8080/endpoint \
-d arg1=hello \
-d arg2=world \
-d json='{"name":"john", "lastNane":"doe"}'
Nel controllore primavera Attualmente sto facendo:
public SomeResponseObject endpoint(
@RequestParam(value="arg1", required=true) String arg1,
@RequestParam(value="arg2", required=true) String arg2,
@RequestParam(value="json", required=true) Person person) {
...
}
L'argomento json
non viene serializzato in un oggetto Person. ottengo un
400 error: the parameter json is not present.
Ovviamente, posso fare l'argomento json
come stringa e analizzare il payload all'interno del metodo di controllo, ma questo tipo di sfida il punto di usare Spring MVC.
Funziona tutto se utilizzo @RequestBody
, ma poi perdo la possibilità di POST di argomenti separati all'esterno del corpo JSON.
C'è un modo in Spring MVC per "mescolare" normali argomenti POST e oggetti JSON?
I don Penso che ci sia un modo, e non credo che la combinazione di dati codificati in forma e dati JSON sia una buona idea. Decidi se vuoi accettare l'uno o l'altro. –
Un sacco di API (Stripe, Plaid, Stormpath) utilizzano questo approccio per separare logicamente i dati delle richieste (ad esempio, se sto facendo una ricerca, posso inserire i criteri di ricerca in una rappresentazione Json e mantenere i dati di impaginazione nel bit codificato in forma della forma). Ma capisco il tuo punto. – Luciano