9

我正在为 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 " }
    ]
}

模型1.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 的许多实例,除非用户这么说。

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

4

1 回答 1

0

使用@RequestBody Map requestBodyinsideModel1.groovy来获取整个请求并将实际用户输入与模型进行比较对我来说似乎是一个非常好的和干净的想法。我相信没有更好的方法。

于 2015-07-02T21:34:20.857 回答