Robię adapter dla interfejsu API REST. Użyłem schematu modelu dla ciała metody POST i PUT. @RequestBody Model1 requestBody
na adapterze.Dodać element przechwytywania modelu schematu na żądanie pola tablicy
Teraz napotkałem body
z polami wymagającymi tablicy .
Swagger UI ciało wejście
Czas 1) W dniu obciążenia Swagger, model inicjowane:
{
"field1" : "",
"field2Optional" : "",
"fieldArray" : [
{ "field2a" : "input2a" }
]
}
Time 2) User-edycja:
{
"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 = ''
Chcę Model1
uchwycić/zapisać elementy użytkownik dodane do fieldArray
jak, { "field2" : "input2b-userAddition " }
. Przy obecnym kodzie, mogę uzyskać tylko pierwszy element tablicy get(0)
, nie chcę tworzyć wielu wystąpień Model2, chyba że użytkownik tak powiedział.
Rozwiązaniem, które mam na myśli jest użycie @RequestBody Map requestBody
wewnątrz Model1.groovy, aby uzyskać żądanie całego ciała i porównać rzeczywiste dane wejściowe użytkownika z modelem. Następnie dodaj pola nie znalezione w modelu, ale znalezione w danych wejściowych użytkownika. Zastanawiam się, czy istnieje lepszy sposób na zrobienie tego?