2015-06-10 27 views
9

Bir REST API'si için bir bağdaştırıcı yapıyorum. POST ve PUT yönteminin gövdesi için model şema kullandım. Adaptörde @RequestBody Model1 requestBody.Bir dizi alanı isteğinde model-şema yakalama öğesi ekleme yapın

Şimdi, dizisini gerektiren alanları içeren body ile karşılaştım. Havalı Yüklemede

Havalı UI gövde giriş

Zaman 1), model tarafından başlatılan:

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

} 

Saat 2) Kullanıcı düzenlendi:

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

Ben Model1/yakalama kullanıcı { "field2" : "input2b-userAddition " } gibi fieldArray eklenen unsurlar kaydetmek istiyorum. Geçerli kod ile, yalnızca get(0) dizisinin ilk elemanını alabilirim, kullanıcı bunu söylemediği sürece Model2'nin bir çok örneğini oluşturmak istemiyorum.

Aklımdaki çözüm, tüm vücut isteğini almak ve modele göre gerçek kullanıcı girişini karşılaştırmak için Model1.groovy içinde @RequestBody Map requestBody'u kullanmaktır. Daha sonra modelde bulunmayan ancak gerçek kullanıcı girdisinde bulunan alanları ekleyin. Bunu yapmak için daha iyi bir yol olup olmadığını merak ediyorum?

cevap

0

@RequestBody Map requestBody'u kullanarak tüm vücut isteğini almak ve modele göre gerçek kullanıcı girişini karşılaştırmak bana çok güzel ve temiz bir fikir gibi geliyor. Daha iyi bir yol olamayacağına inanıyorum.

İlgili konular