Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C#

हम Asp.Net WebAPI C# में MIME प्रकार कैसे निर्दिष्ट करते हैं?

एक मीडिया प्रकार, जिसे 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 को।

हम Asp.Net WebAPI C# में MIME प्रकार कैसे निर्दिष्ट करते हैं?

उपरोक्त आउटपुट से हम देख सकते हैं कि हेडर वैल्यू एप्लिकेशन / एक्सएमएल को स्वीकार किए बिना, वेब एपीआई सेवा हमेशा 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 WebAPI C# में MIME प्रकार कैसे निर्दिष्ट करते हैं?

उपरोक्त आउटपुट से हम देख सकते हैं कि स्वीकार करें हेडर वैल्यू एप्लिकेशन/जेसन के बावजूद, वेब एपीआई सेवा एक्सएमएल लौटा रही है।

जब ब्राउज़र से अनुरोध किया जाता है तो ASP.NET वेब एपीआई सेवा से XML के बजाय JSON वापस करने का उदाहरण -

जब ब्राउज़र से हमारे छात्र नियंत्रक से अनुरोध किया जाता है, तो प्रतिक्रिया एक्सएमएल प्रारूप में होगी। ऐसा इसलिए है क्योंकि ब्राउज़र डिफ़ॉल्ट रूप से स्वीकार हेडर को टेक्स्ट/एचटीएमएल के रूप में भेजता है।

हम Asp.Net WebAPI C# में MIME प्रकार कैसे निर्दिष्ट करते हैं?

अब देखते हैं कि ब्राउज़र से अनुरोध जारी होने पर 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 प्रकार की है जब अनुरोध को ब्राउज़र से स्वीकार किया जाता है, भले ही हेडर टेक्स्ट/एचटीएमएल को स्वीकार न किया जाए।

हम Asp.Net WebAPI C# में MIME प्रकार कैसे निर्दिष्ट करते हैं?


  1. हम C# ASP.NET WebAPI में क्रिया विधि के लिए उपनाम नाम कैसे निर्दिष्ट कर सकते हैं?

    नियंत्रक में सार्वजनिक विधि को क्रिया विधि कहा जाता है। आइए एक उदाहरण पर विचार करें जहां डेमोकंट्रोलर वर्ग एपीकंट्रोलर से लिया गया है और इसमें कई क्रिया विधियां शामिल हैं जिनके नाम HTTP क्रियाओं जैसे गेट, पोस्ट, पुटैंड डिलीट से मेल खाते हैं। उदाहरण public class DemoController : ApiController{  

  1. C# ASP.NET WebAPI में CORS समस्या को कैसे हल करें?

    क्रॉस-ओरिजिनल रिसोर्स शेयरिंग (सीओआरएस) एक ऐसा तंत्र है जो ब्राउज़र को एक मूल पर चलने वाले वेब एप्लिकेशन को एक अलग मूल से चयनित संसाधनों तक पहुंच देने के लिए अतिरिक्त HTTP शीर्षलेखों का उपयोग करता है। एक वेब एप्लिकेशन एक क्रॉस-ओरिजिनल HTTP अनुरोध को तब निष्पादित करता है जब वह ऐसे संसाधन का अनुरोध कर

  1. सी # एएसपी.नेट वेबएपीआई में किसी क्रिया विधि से कस्टम परिणाम प्रकार कैसे वापस करें?

    हम IHttpActionResult इंटरफ़ेस . को लागू करके परिणाम प्रकार के रूप में अपना स्वयं का कस्टम वर्ग बना सकते हैं . IHttpActionResult में एक ही विधि है, ExecuteAsync, जो अतुल्यकालिक रूप से एक HttpResponseMessage उदाहरण बनाता है। public interface IHttpActionResult {    Task<HttpResponseMessag