2012-12-01 18 views
13

का उपयोग कर डिफ़ॉल्ट रूप से जेसन लौटें क्या एक्सएमएल के बजाय एएसपी.नेट वेब एपीआई से डिफ़ॉल्ट रूप से जेसन वापस करना संभव है?एएसपी.NET वेब एपीआई

+1

इस तरह के वेब एपी अज्ञेयवादी रखने के पैटर्न को तोड़ देता है। यदि आप अपने AJAX अनुरोध के शीर्षकों में 'स्वीकृति: एप्लिकेशन/जेसन' भेजते हैं, तो वेबएपीआई जेसन में जवाब देगी। क्या मैं आपका AJAX अनुरोध देख सकता हूं? – gideon

+0

धन्यवाद दोस्त। मुझे बस इतना ही चाहिए। मैंने वेब एपीआई और एपीआई यूआरएल रूट में लगाए गए ब्लोक का उपयोग करके प्लुरसाइट से एक वीडियो ट्यूटोरियल देखा और यह सीधे ब्राउज़र में जेसन के साथ जवाब दिया। तो कोई AJAX अनुरोध नहीं था। यह केवल वेबसाइट.com/api/control –

+0

था आपको स्वीकृति शीर्षलेख की भी आवश्यकता नहीं है। यदि आपके पास GET अनुरोध पर स्वीकृति शीर्षलेख नहीं है, तो आपको वेबएपीआई से जेएसओएन वापस लेना चाहिए। –

उत्तर

18

डिफ़ॉल्ट रूप से यह किया जाता है। JsonMediaTypeFormatter पहले MediaTypeFormatter के रूप में पंजीकृत है और यदि ग्राहक किसी विशिष्ट प्रारूप में प्रतिक्रिया का अनुरोध नहीं करता है, तो एएसपी.नेट वेब एपीआई पाइपलाइन आपको application/json प्रारूप में प्रतिक्रिया देता है।

क्या आप चाहते हैं केवल समर्थन application/json है, तो अन्य सभी formatters हटाने और केवल JsonMediaTypeFormatter छोड़:

public static void Configure(HttpConfiguration config) { 

    var jqueryFormatter = config.Formatters.FirstOrDefault(x => x.GetType() == typeof(JQueryMvcFormUrlEncodedFormatter)); 
    config.Formatters.Remove(config.Formatters.XmlFormatter); 
    config.Formatters.Remove(config.Formatters.FormUrlEncodedFormatter); 
    config.Formatters.Remove(jqueryFormatter); 
} 
+0

यह मेरे लिए काम करता है। धन्यवाद –

8

@ tugberk के समाधान वास्तव में डिफ़ॉल्ट फ़ॉर्मेटर बदलने का लक्ष्य को पूरा नहीं करता है। यह बस JSON को केवल विकल्प बनाता है। आप JSON डिफ़ॉल्ट बनाने के लिए और अभी भी अन्य प्रकार के सभी का समर्थन करना चाहते हैं, तो आप निम्न कर सकते हैं:

public static void Configure(HttpConfiguration config) { 
    // move the JSON formatter to the front of the line 
    var jsonFormatter = config.Formatters.JsonFormatter; 
    config.Formatters.Remove(jsonFormatter); 
    config.Formatters.Insert(0, jsonFormatter); 
} 

नोट: JSON वेब एपीआई 2.0 के रूप में डिफ़ॉल्ट फ़ॉर्मेटर है।

+0

मेरे लिए काम करता है। काफी बेहतर। – Phil

संबंधित मुद्दे