एक मीडिया प्रकार, जिसे MIME प्रकार भी कहा जाता है, डेटा के एक टुकड़े के प्रारूप की पहचान करता है। HTTP में, मीडिया प्रकार संदेश के मुख्य भाग के प्रारूप का वर्णन करते हैं। एक मीडिया प्रकार में दो तार होते हैं, एक प्रकार और एक उपप्रकार। उदाहरण के लिए -
- पाठ/एचटीएमएल
- छवि/पीएनजी
- एप्लिकेशन/जेसन
जब एक HTTP संदेश में एक निकाय-निकाय होता है, तो सामग्री-प्रकार शीर्षलेख संदेश के मुख्य भाग के स्वरूप को निर्दिष्ट करता है। यह प्राप्तकर्ता को संदेश के मुख्य भाग की सामग्री को पार्स करने का तरीका बताता है।
जब क्लाइंट अनुरोध संदेश भेजता है, तो इसमें एक स्वीकृति शीर्षलेख शामिल हो सकता है। एक्सेप्ट हेडर सर्वर को बताता है कि क्लाइंट सर्वर से कौन सा मीडिया टाइप चाहता है।
स्वीकार करें:टेक्स्ट/एचटीएमएल, एप्लिकेशन/एक्सएचटीएमएल+एक्सएमएल,एप्लिकेशन/एक्सएमएल
मीडिया प्रकार यह निर्धारित करता है कि कैसे वेब एपीआई HTTP संदेश के मुख्य भाग को क्रमबद्ध और अक्रमांकन करता है। वेब एपीआई में एक्सएमएल, जेएसओएन, बीएसओएन, और फॉर्मुरल एन्कोडेड डेटा के लिए अंतर्निहित समर्थन है, और आप मीडिया फॉर्मेटर लिखकर अतिरिक्त मीडिया प्रकारों का समर्थन कर सकते हैं।
MediaTypeFormatter एक अमूर्त वर्ग है जिससे JsonMediaTypeFormatter और XmlMediaTypeFormatter वर्ग इनहेरिट करते हैं। JsonMediaTypeFormatter JSON को हैंडल करता है और XmlMediaTypeFormatter XML को हैंडल करता है। मीडिया प्रकार WebApiConfig वर्ग की रजिस्टर विधि में निर्दिष्ट हैं। आइए कुछ ऐसे उदाहरण देखें जहां हम मीडिया प्रकारों के साथ खेल सकते हैं।
छात्र नियंत्रक
उदाहरण
using DemoWebApplication.Models; using DemoWebApplication.Models; using System.Collections.Generic; using System.Linq; using System.Web.Http; namespace DemoWebApplication.Controllers{ public class StudentController : ApiController{ List <Student> students = new List <Student>{ new Student{ Id = 1, Name = "Mark" }, new Student{ Id = 2, Name = "John" } }; public IEnumerable <Student> Get(){ return students; } } }
एएसपी.नेट वेब एपीआई सेवा से केवल JSON वापस करने का उदाहरण स्वीकार करें हेडर मान के बावजूद -
public static class WebApiConfig{ public static void Register(HttpConfiguration config){ config.MapHttpAttributeRoutes(); config.Formatters.Remove(config.Formatters.XmlFormatter); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
उपरोक्त कोड का उपयोग करते हुए, हमने XmlFormatter को हटा दिया है जो ASP.NET वेब एपीआई को क्लाइंट अनुरोध में हेडर मान को स्वीकार किए बिना हमेशा JSON वापस करने के लिए मजबूर करता है। इस तकनीक का उपयोग तब करें जब आप चाहते हैं कि आपकी सेवा केवल JSON का समर्थन करे न कि XML को।
उपरोक्त आउटपुट से हम देख सकते हैं कि हेडर वैल्यू एप्लिकेशन / एक्सएमएल को स्वीकार किए बिना, वेब एपीआई सेवा हमेशा JSON वापस करने वाली है।
एएसपी.नेट वेब एपीआई सेवा से केवल एक्सएमएल वापस करने का उदाहरण स्वीकार करें हेडर मान के बावजूद -
public static class WebApiConfig{ public static void Register(HttpConfiguration config){ config.MapHttpAttributeRoutes(); config.Formatters.Remove(config.Formatters.JsonFormatter); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
उपरोक्त आउटपुट से हम देख सकते हैं कि स्वीकार करें हेडर वैल्यू एप्लिकेशन/जेसन के बावजूद, वेब एपीआई सेवा एक्सएमएल लौटा रही है।
जब ब्राउज़र से अनुरोध किया जाता है तो ASP.NET वेब एपीआई सेवा से XML के बजाय JSON वापस करने का उदाहरण -
जब ब्राउज़र से हमारे छात्र नियंत्रक से अनुरोध किया जाता है, तो प्रतिक्रिया एक्सएमएल प्रारूप में होगी। ऐसा इसलिए है क्योंकि ब्राउज़र डिफ़ॉल्ट रूप से स्वीकार हेडर को टेक्स्ट/एचटीएमएल के रूप में भेजता है।
अब देखते हैं कि ब्राउज़र से अनुरोध जारी होने पर XML के बजाय JSON प्रतिक्रिया कैसे भेजें।
public static class WebApiConfig{ public static void Register(HttpConfiguration config){ config.MapHttpAttributeRoutes(); config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
नीचे दिए गए आउटपुट से पता चलता है कि प्रतिक्रिया JSON प्रकार की है जब अनुरोध को ब्राउज़र से स्वीकार किया जाता है, भले ही हेडर टेक्स्ट/एचटीएमएल को स्वीकार न किया जाए।