मेरे पास स्प्रिंग-बूट एप्लिकेशन में लिखा गया एक साधारण आरईएसटी नियंत्रक है, लेकिन मुझे यकीन नहीं है कि यह अनुरोध हेडर में सामग्री-प्रकार पैरामीटर के आधार पर JSON या XML को वापस करने के लिए सामग्री वार्ता को कैसे कार्यान्वित किया जाए । क्या कोई मुझे समझा सकता है, मैं गलत क्या कर रहा हूं?स्प्रिंग बूट कंट्रोलर सामग्री वार्ता
नियंत्रक विधि:
@RequestMapping(value = "/message", method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
public Message getMessageXML(@RequestParam("text") String text) throws Exception {
Message message = new Message();
message.setDate(new Date());
message.setName("Test");
message.setAge(99);
message.setMessage(text);
return message;
}
जब इस विधि (भले ही मैं application/xml
या text/xml
होने की Content-Type
उल्लेख करें) बुला मैं हमेशा JSON मिलता है।
जब मैं अलग-अलग मैपिंग और विभिन्न सामग्री प्रकार के साथ दो विधियों को लागू करता हूं, तो मैं एक्सएमएल से एक्सएमएल प्राप्त करने में सक्षम हूं लेकिन यह काम नहीं करता है अगर मैं एक विधि में दो मीडिया टाइप निर्दिष्ट करता हूं (जैसे प्रदान किया गया उदाहरण)।
मैं चाहते हैं क्या \message
endpoint फोन और
- एक्सएमएल प्राप्त करने के लिए जब GET अनुरोध की सामग्री प्रकार application/xml करने के लिए
- JSON सेट किया गया है जब सामग्री प्रकार आवेदन है/जेसन
किसी भी मदद की सराहना की जाती है।
संपादित करें: मैं सभी मीडिया प्रकार
@RequestMapping(value = "/message", method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE }, consumes = MediaType.ALL_VALUE)
public Message getMessageXML(@RequestParam("text") String text) throws Exception {
Message message = new Message();
message.setDate(new Date());
message.setName("Vladimir");
message.setAge(35);
message.setMessage(text);
return message;
}
आपको मूल्य 'एप्लिकेशन/एक्सएमएल' या किसी भी समर्थित मीडिया प्रकार के साथ' स्वीकार करें 'शीर्षलेख प्रदान करने की आवश्यकता है। – systemfreund
"सामग्री-प्रकार" शीर्षलेख परिभाषित करता है कि आप किस प्रकार की सामग्री भेज रहे हैं - जिसे आप प्राप्त नहीं करना चाहते हैं (यही वह है जिसे "स्वीकार करें" शीर्षलेख है। इसलिए GET अनुरोध के लिए "सामग्री-प्रकार" शीर्षलेख का उपयोग करना ' टी समझ में नहीं आता है, क्योंकि इसमें कोई भी (बॉडी) सामग्री नहीं हो सकती है। तो आपके मामले में आपको अपने अनुरोध के लिए "स्वीकार करें" शीर्षलेख का उपयोग करना चाहिए और "सामग्री-प्रकार" शीर्षलेख को उस सामग्री के प्रकार का नाम देने के लिए जवाब देना चाहिए जो कि है वास्तव में भेजें। –