/ / स्प्रिंग बूट रेस्ट कंट्रोलर POST एकाधिक डेटा प्रकारों को एक अनुरोध url - जावा, वसंत, आराम, जैक्सन, वसंत-बूट में मैप किया गया

स्प्रिंग बूट रेस्ट कंट्रोलर POST एकाधिक डेटा प्रकारों को एक अनुरोध url - जावा, वसंत, आराम, जैक्सन, वसंत-बूट में मैप किया गया

मैं एक एंडपॉइंट स्थापित करने की कोशिश कर रहा हूं जो एक ही ऑब्जेक्ट या उसी प्रकार की ऑब्जेक्ट्स की सूची स्वीकार कर सकता है।

मैंने दो डेटा प्रकारों के साथ घोषित दो विधियों की कोशिश की है लेकिन वसंत ऐसा नहीं करता है (सर्वर शुरू करने में विफल रहता है)

@RequestMapping(
value = "",
method = RequestMethod.POST ,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<Object> single(@RequestBody Something something){
return ResponseEntity.ok("ok");
}

@RequestMapping(
value = "",
method = RequestMethod.POST ,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<Object> multiple(@RequestBody List<Something> somethingList){
return ResponseEntity.ok("ok");
}

मैंने जो निकटतम प्राप्त किया है वह कुछ स्वीकार कर रहा है [] और एक विधि घोषित कर रही है।

@RequestMapping(
value = "",
method = RequestMethod.POST ,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<Object> somethingArray(@RequestBody Something... something){
return ResponseEntity.ok("ok");
}

सवाल: क्या किसी ऑब्जेक्ट को स्वीकार किए बिना इसे करने का कोई तरीका है और मैन्युअल रूप से deserialization करते हैं?

संपादित करें: मैंने कई @RequestBody "यानी भी कोशिश की

@RequestMapping(
value = "",
method = RequestMethod.POST ,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<Object> somethingArray(@RequestBody(required = false) Something something, @RequestBody(required = false) Something[] somethingArray){
return ResponseEntity.ok("ok");
}

उत्तर:

जवाब के लिए 0 № 1

आप एक विधि बना सकते हैं, जो एक प्राप्त करता हैउदाहरण के लिए स्ट्रिंग। फिर आपको एक स्ट्रिंग का विश्लेषण करने की आवश्यकता है, इसे ऑब्जेक्ट में मार्शल करें, और परिणाम प्रकार पर निर्भर एक निजी विधि को कॉल करें। लेकिन मेरा मतलब यह गलत दृष्टिकोण है। अलग-अलग पैरामीटर के लिए अलग-अलग एंडपॉइंट्स को बेहतर परिभाषित करें।


जवाब के लिए 0 № 2

ऐसा करने पर मैं आमतौर पर एक बहुवचन अंतराल बना देता हूं।

यदि मैं ग्राहक जोड़ रहा हूं तो एंडपॉइंट / ग्राहक होगा, अगर यह एक सूची है जो मैं करता हूं / ग्राहक।

मेरे ज्ञान के लिए आप पैरामीटर प्रकार द्वारा अनुरोध विधि को अधिभारित नहीं कर सकते हैं।