2015-06-10 16 views
9

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?

Trả lời

0

Sử dụng @RequestBody Map requestBody bên trong Model1.groovy để nhận yêu cầu toàn thân và so sánh đầu vào thực tế của người dùng với mô hình có vẻ là ý tưởng rất hay và sạch đối với tôi. Tôi tin rằng không thể có một cách tốt hơn.

Các vấn đề liên quan