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

时间:2015-06-10 12:39:33

标签: 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" }
    ]

}

时间2)用户编辑:

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

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

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

1 个答案:

答案 0 :(得分:0)

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