c# - HTML की वापसी के लिए सामग्री बातचीत



asp.net-web-api content-negotiation (1)

यदि हम IHttpActionResult की चर्चा को एक IHttpActionResult लिए एक साथ रखते हैं, तो वेब एपीआई में सामग्री-वार्ता प्रक्रिया प्रक्रियाओं के माध्यम से संचालित होती है। तो आपको मीडिया प्रकार के text/html को संभालने के लिए एक नया फॉर्मेट बनाने की आवश्यकता होगी

वेब एपीआई डिफॉल्ट एल्गोरिदम को उजागर करता है जो इसे सामग्री-वार्ता के लिए उपयोग करता है जिसे डिफॉल्ट कंटेंट IContentNegotiator कहा जाता है जो कि सेवा IContentNegotiator का कार्यान्वयन है।

अब यह बातचीत एल्गोरिथ्म आपके द्वारा स्वचालित रूप से निम्न मामलों में वेब एपीआई द्वारा चलाया जा सकता है:

उपयोग # 1 :

public MyObject Get(int id)
{
   return new MyObject();
}

या

आप मैन्युअल रूप से निम्नलिखित में की तरह बातचीत चला सकते हैं:

उपयोग # 2 :

public HttpResponseMessage Get()
{
    HttpResponseMessage response = new HttpResponseMessage();

    IContentNegotiator defaultNegotiator = this.Configuration.Services.GetContentNegotiator();
    ContentNegotiationResult negotationResult = defaultNegotiator.Negotiate(typeof(string), this.Request, this.Configuration.Formatters);

    response.Content = new ObjectContent<string>("Hello", negotationResult.Formatter, negotationResult.MediaType);
    return response;
}

IHttpActionResults के बारे में :
निम्न परिदृश्य में, Ok<> टाइप करें OkNegotiatedContentResult<> का एक उदाहरण बनाने के लिए एक शॉर्टकट विधि है।

public IHttpActionResult Get()
{
    return Ok<string>("Hello");
}

बात यह है कि OkNegotiatedContentResult<> प्रकार इसी तरह के रूप में उपयोग # 2 परिदृश्य में ऊपर है यानी वे आंतरिक वार्ताकार चलाते हैं

इसलिए निष्कर्ष निकालना, यदि आप text/html मीडिया प्रकार का समर्थन करने की योजना बना रहे हैं, तो आपको एक कस्टम फॉर्मेटर लिखना और उसे वेब एपीआई के फॉर्मेटर संग्रह में जोड़ना होगा और तब जब आप Ok<string>("Hello") का उपयोग text/html हेडर को स्वीकार करेंगे text/html , आपको text/html में प्रतिक्रिया दिखाई देनी चाहिए उम्मीद है की यह मदद करेगा।

IHttpActionResult का उपयोग करते हुए वेब एपीआई 2 से एचटीएमएल को वापस कैसे करना है इस ब्लॉग पोस्ट को पढ़ने के बाद, मैं किसी भी तरह से " IHttpActionResult " इस IHttpActionResult को मेरे ApiController से Accept करना चाहता हूं जो अनुरोध के साथ भेजा जाता है।

नियंत्रक कार्यों को देखते हुए जिनके पास इस प्रकार के हस्ताक्षर हैं:

public MyObject Get(int id)
{
    return new MyObject();
}

यदि अनुरोध Accept: text/html , तो यह IHttpActionResult का उपयोग HTML को वापस करने के लिए किया जाना चाहिए IHttpActionResult क्या यह संभव है? इसके अतिरिक्त, इस सामग्री वार्तालाप पाइपलाइन को जेसन या एक्सएमएल (जो कि अंतर्निहित समर्थन है) के लिए काम करता है, इस पर कुछ अंतर्दृष्टि बहुत सराहना की जाएगी।





content-negotiation