Tôi đang làm một bộ điều hợp cho một API REST. Tôi đã sử dụng lược đồ mô hình cho cơ thể của phương thức POST và PUT. @RequestBody Model1 requestBody
tại bộ điều hợp.Thực hiện thêm phần tử chụp mô hình lược đồ trên yêu cầu trường mảng
Bây giờ, tôi đã gặp body
với các trường yêu cầu mảng .
Swagger UI cơ thể đầu vào
Thời gian 1) Trên tải Swagger, Model-khởi xướng:
{
"field1" : "",
"field2Optional" : "",
"fieldArray" : [
{ "field2a" : "input2a" }
]
}
Time 2) người dùng chỉnh sửa:
{
"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 = ''
Tôi muốn Model1
để chụp/lưu các yếu tố người dùng thêm vào fieldArray
như, { "field2" : "input2b-userAddition " }
. Với mã hiện tại, tôi chỉ có thể lấy phần tử đầu tiên của mảng get(0)
, tôi không muốn tạo nhiều phiên bản của Model2 trừ khi người dùng nói như vậy.
Giải pháp mà tôi cần lưu ý là sử dụng @RequestBody Map requestBody
bên trong Model1.groovy để nhận yêu cầu toàn bộ cơ thể và so sánh đầu vào người dùng thực tế với mô hình. Sau đó, thêm các trường không tìm thấy trong mô hình nhưng được tìm thấy trong đầu vào thực tế của người dùng. Tôi tự hỏi nếu có một cách tốt hơn để làm điều này?