9

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?

risposta

0

L'utilizzo diall'interno di Model1.groovy per ottenere l'intera richiesta del corpo e confrontare l'input dell'utente effettivo rispetto al modello sembra un'idea molto carina e pulita per me. Credo che non ci possa essere un modo migliore.

Problemi correlati