9

Ich mache einen Adapter für eine REST-API. Ich habe das Modellschema für den Körper der POST- und PUT-Methode verwendet. @RequestBody Model1 requestBody am Adapter.Machen Sie Modell-Schema-Capture-Element-Zusatz auf einer Array-Feld-Anfrage

Jetzt habe ich body mit Feldern, die eine -Array erfordert.

Swagger UI Körper Eingang

Zeit 1) Auf Swagger Last, Model initiiert:

{ 
    "field1"   : "", 
    "field2Optional" : "", 
    "fieldArray"  : [ 
     { "field2a"     : "input2a" } 
    ] 

} 

Time 2) Benutzer bearbeitet:

{ 
    "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 = '' 

Ich möchte Model1 erfassen/die Elemente der Benutzer auf die fieldArray wie { "field2" : "input2b-userAddition " } hinzugefügt speichern. Mit dem aktuellen Code kann ich nur das erste Element des Arrays get(0) abrufen, ich möchte nicht viele Instanzen von Model2 erstellen, es sei denn der Benutzer sagte dies.

Die Lösung, die ich im Sinn habe, ist @RequestBody Map requestBody in Model1.groovy zu verwenden, um die gesamte Körperanforderung zu erhalten und die tatsächliche Benutzereingabe mit dem Modell zu vergleichen. Fügen Sie dann die Felder hinzu, die nicht im Modell gefunden wurden, aber in der tatsächlichen Benutzereingabe gefunden wurden. Ich frage mich, ob es einen besseren Weg gibt, dies zu tun?

Antwort

0

Mit @RequestBody Map requestBody innerhalb Model1.groovy, um die gesamte Körperanforderung zu erhalten und die tatsächliche Benutzereingabe vs das Modell zu vergleichen scheint eine sehr schöne und saubere Idee zu mir. Ich glaube, es kann keinen besseren Weg geben.