2015-06-10 10 views
9

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?

Odpowiedz

0

Korzystanie z @RequestBody Map requestBody wewnątrz Model1.groovy, aby uzyskać żądanie całego ciała i porównać rzeczywiste wejście użytkownika w stosunku do modelu wydaje mi się bardzo ładny i czysty pomysł. Uważam, że nie może istnieć lepszy sposób.

Powiązane problemy