在数组字段请求上添加模型架构捕获元素

9 annotations swagger swagger-ui swagger-2.0 swagger-editor

我正在为REST API做一个适配器.我已经将模型架构用于POST和PUT方法的主体.@RequestBody Model1 requestBody在适配器.

现在,我遇到body了需要数组的字段.

Swagger UI 正文输入

时间1)在Swagger负载上,模型启动:

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

}
Run Code Online (Sandbox Code Playgroud)

时间2)用户编辑:

{
    "field1"         : "input1",
    "field2Optional" : "",
    "fieldArray"     : [
        { "field2"        :  "input2a" },
        { "field2"        :  "input2b-userAddition " }
    ]
}
Run Code Online (Sandbox Code Playgroud)

Model1.groovy

@XmlElement
String field1 = ''

@XmlElement
String fieldOptional = ''

@XmlElement
ArrayList<Model2> fieldArray = new ArrayList<>( Arrays.asList(new Model2()) ).get(0)

}
Run Code Online (Sandbox Code Playgroud)

Model2.groovy

@XmlElement
String field2 = ''
Run Code Online (Sandbox Code Playgroud)

我想Model1捕获/保存用户添加的元素fieldArray,{ "field2" : "input2b-userAddition " }.使用当前代码,我只能获得数组的第一个元素get(0),我不想创建Model2的许多实例,除非用户这么说.

我想到的解决方案是@RequestBody Map requestBody在Model1.groovy中使用来获取整个身体请求并比较实际用户输入与模型.然后添加模型中找不到但在实际用户输入中找到的字段.我想知道是否有更好的方法来做到这一点?

Him*_*hra 0

使用@RequestBody Map requestBody内部Model1.groovy来获取整个身体请求并比较实际的用户输入与模型对我来说似乎是一个非常好的和干净的想法。我相信没有更好的办法了。