Sto facendo un adattatore per un'API REST. Ho usato lo schema del modello per il corpo del metodo POST e PUT. @RequestBody Model1 requestBody
all'adattatore.Rendere l'aggiunta dell'elemento di acquisizione dello schema modello su una richiesta di campo dell'array
Ora ho riscontrato body
con campi che richiedono un array .
Swagger UI corpo ingresso
Tempo 1) Il carico Swagger, Model avviato:
{
"field1" : "",
"field2Optional" : "",
"fieldArray" : [
{ "field2a" : "input2a" }
]
}
Time 2) User-cura:
{
"field1" : "input1",
"field2Optional" : "",
"fieldArray" : [
{ "field2" : "input2a" },
{ "field2" : "input2b-userAddition " }
]
}
Model1.groovy
@XmlElement
String field1 = ''
@XmlElement
String fieldOptional = ''
@XmlElement
ArrayList<Model2> fieldArray = new ArrayList<>(Arrays.asList(new Model2())).get(0)
}
Model2.groovy
@XmlElement
String field2 = ''
voglio Model1
di bloccaggio/salvo gli elementi che l'utente ha aggiunto al fieldArray
come, { "field2" : "input2b-userAddition " }
. Con il codice corrente, posso solo ottenere il primo elemento dell'array get(0)
, non voglio creare molte istanze di Model2 a meno che l'utente non lo abbia detto.
La soluzione che ho in mente è quella di utilizzare @RequestBody Map requestBody
all'interno di Model1.groovy per ottenere l'intera richiesta del corpo e confrontare l'input dell'utente effettivo rispetto al modello. Quindi aggiungere i campi non trovati nel modello ma trovati nell'effettivo input dell'utente. Mi chiedo se c'è un modo migliore per farlo?