दिलचस्प पोस्ट
लॉक स्क्रीन अभिविन्यास (एंड्रॉइड) कैसे iPython आउटपुट में HTML एम्बेड करें? त्वरित नियंत्रण का उपयोग करके पृष्ठ नियंत्रण के साथ एक स्क्रॉल व्यू कैसे बनाएं? MVC कस्टम रूटिंग में एकाधिक स्तर NSDictionary में शून्य मान का पता लगाएं जावास्क्रिप्ट निर्भरता प्रबंधन: एनपीएम बनाम बिवर बनाम वोल्वो किसी फाइल को छोडने का तरीका, जबकि यह एफएसटीआईएम के साथ खुला है मैं PHP में कैसे एक UTF-8 सीएसवी आउटपुट कर सकता हूं जो Excel ठीक से पढ़ा जाएगा? टाइपस्क्रिप्ट / एंजुलर 2 में इंटरफेस और मॉडल का उपयोग कब किया जाए mylib.so पाठ पुनर्स्थापना है यह स्मृति बर्बाद कर रहा है और एक सुरक्षा जोखिम है। कृपया ठीक करें PHP curl त्रुटि कोड 60 कमांड लाइन से एक्लिप्स जावा प्रोजेक्ट बनाएँ जावास्क्रिप्ट में ऑब्जेक्ट में सरणी और मान सरणी को मिलाएं मैं MATLAB में एक रॉ छवि में कैसे पढ़ सकता हूं? रूबी में संख्याओं की सरणी कैसे जोड़ती है?

वसंत में @RequestBody और @ResponseBody एनोटेशन

क्या कोई स्प्रिंग 3 में @ResponseBody और @ResponseBody एनोटेशन की व्याख्या कर सकता है? यह किस लिए हैं? कोई भी उदाहरण महान होगा

Solutions Collecting From Web of "वसंत में @RequestBody और @ResponseBody एनोटेशन"

डॉक्स में एक संपूर्ण धारा है जिसे 16.3.3.4 अनुरोधित शरीर को @RequestBody एनोटेशन के साथ मैप करना । और एक 16.3.3.5 बुलाया , उत्तर प्रतिसाद शरीर के साथ @ResponseBody एनोटेशन । मेरा सुझाव है कि आप उन वर्गों से परामर्श लेंगे इसके अलावा प्रासंगिक: @ResponseBody , @ResponseBody

उपयोग के उदाहरण कुछ ऐसा होगा:

JQuery जैसे जावास्क्रिप्ट-लाइब्रेरी का उपयोग करते हुए, आप इस तरह एक JSON-object पोस्ट करेंगे:

 { "firstName" : "Elmer", "lastName" : "Fudd" } 

आपका नियंत्रक विधि ऐसा दिखेगा:

 // controller @ResponseBody @RequestMapping("/description") public Description getDescription(@RequestBody UserStats stats){ return new Description(stats.getFirstName() + " " + stats.getLastname() + " hates wacky wabbits"); } // domain / value objects public class UserStats{ private String firstName; private String lastName; // + getters, setters } public class Description{ private String description; // + getters, setters, constructor } 

अब अगर आपके पास अपने क्लासपाथ पर जैक्सन है (और एक <mvc:annotation-driven> सेटअप है), स्प्रिंग आने वाले जेएसओएन को पोस्ट बॉडी से एक यूज़रस्टैट्स ऑब्जेक्ट में परिवर्तित कर देगा (क्योंकि आपने @RequestBody एनोटेशन जोड़ लिया है) और यह सीरियल करेगा वस्तु को JSON पर लौटा दिया (क्योंकि आपने @ResponseBody एनोटेशन को जोड़ा है)। तो ब्राउज़र / क्लाइंट इस JSON परिणाम को देखेंगे:

 { "description" : "Elmer Fudd hates wacky wabbits" } 

एक पूरा काम उदाहरण के लिए मेरा यह पिछले जवाब देखें: https://stackoverflow.com/a/5908632/342852

नोट: RequestBody / ResponseBody निश्चित रूप से JSON तक सीमित नहीं है, दोनों सादा पाठ और XML सहित कई प्रारूपों को संभाल सकते हैं, लेकिन JSON शायद सबसे अधिक उपयोग किया गया प्रारूप है।


अद्यतन: स्प्रिंग 4.x के बाद से, आप आमतौर पर विधि स्तर पर @ResponseBody उपयोग नहीं करेंगे, बल्कि क्लास स्तर पर @RestController , उसी प्रभाव के साथ। @RestController एनोटेशन के साथ REST नियंत्रकों को बनाना देखें

@RequestBody : एक विधि पैरामीटर को इंगित करने वाला एनोटेशन HTTP अनुरोध के शरीर के लिए बाध्य होना चाहिए।

उदाहरण के लिए:

 @RequestMapping(path = "/something", method = RequestMethod.PUT) public void handle(@RequestBody String body, Writer writer) throws IOException { writer.write(body); } 

@ResponseBody एनोटेशन को एक विधि पर रखा जा सकता है और यह दर्शाता है कि रिटर्न प्रकार को सीधे HTTP प्रतिसाद बॉडी में लिखा जाना चाहिए (और एक मॉडल में नहीं रखा गया है, या एक दृश्य नाम के रूप में व्याख्या नहीं किया गया है)

उदाहरण के लिए:

 @RequestMapping(path = "/something", method = RequestMethod.PUT) public @ResponseBody String helloWorld() { return "Hello World"; } 

वैकल्पिक रूप से, हम @ नियंत्रक एनोटेशन के स्थान पर @RestController एनोटेशन का उपयोग कर सकते हैं यह @ResponseBody का उपयोग करने की आवश्यकता को निकाल देगा

अधिक जानकारी के लिए

 package com.programmingfree.springshop.controller; import java.util.List; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.programmingfree.springshop.dao.UserShop; import com.programmingfree.springshop.domain.User; @RestController @RequestMapping("/shop/user") public class SpringShopController { UserShop userShop=new UserShop(); @RequestMapping(value = "/{id}", method = RequestMethod.GET,headers="Accept=application/json") public User getUser(@PathVariable int id) { User user=userShop.getUserById(id); return user; } @RequestMapping(method = RequestMethod.GET,headers="Accept=application/json") public List<User> getAllUsers() { List<User> users=userShop.getAllUsers(); return users; } } 

उपरोक्त उदाहरण में वे सभी उपयोगकर्ता और विशिष्ट आईडी विवरण प्रदर्शित करने जा रहे हैं अब मैं आईडी और नाम दोनों का उपयोग करना चाहता हूं,

1) लोकलहोस्ट: 8093 / प्रेजसन / दुकान / उपयोगकर्ता <— यह लिंक सभी उपयोगकर्ता विवरण प्रदर्शित करेगा
2) लोकलहोस्ट: 8093 / प्रेजसन / शॉप / यूजर / 11 <—- अगर मैं लिंक के 11 में इस्तेमाल करता हूं, तो यह विशिष्ट उपयोगकर्ता 11 विवरण प्रदर्शित करेगा

अब मैं आईडी और नाम दोनों का उपयोग करना चाहता हूं

लोकलहोस्ट: 8093 / प्रेजसन / शॉप / यूजर / 11 / राजू <—————– इस तरह से इसका मतलब है कि हम इसमें किसी भी एक का उपयोग कर सकते हैं कृपया मेरी मदद करें …. ।

नीचे एक जावा नियंत्रक में एक विधि का एक उदाहरण है।

 @RequestMapping(method = RequestMethod.POST) @ResponseBody public HttpStatus something(@RequestBody MyModel myModel) { return HttpStatus.OK; } 

@RequestBody एनोटेशन का उपयोग करके आप अपने मूल्यों को किसी विशिष्ट कॉल से निपटने के लिए अपने सिस्टम में बनाए गए मॉडल के साथ मैप करेंगे। जबकि @ रिस्पॉंसबॉडी का इस्तेमाल करके आप उस जगह पर कुछ भी वापस भेज सकते हैं जहां से अनुरोध किया गया था। दोनों चीजों को किसी भी कस्टम पार्टर आदि के बिना आसानी से मैप किया जाएगा।