मैं उस शरीर के साथ HTTP पोस्ट अनुरोध भेजना चाहता हूं जिसमें एक साधारण ब्लॉग पोस्ट, कुछ भी फैंसी नहीं है।मैं एएसपी.NET वेब एपीआई वैल्यूप्रोवाइडर में HTTP POST अनुरोध से बॉडी वैल्यू कैसे प्राप्त करूं?
मैं here पढ़ा है जब आप एक जटिल प्रकार है (यानी एक प्रकार है कि है नहीं string
, int
आदि) वेब एपीआई में बाध्य करने के लिए चाहते हैं, तो एक अच्छा दृष्टिकोण कस्टम मॉडल बांधने की मशीन बनाने के लिए है कि।
मेरे पास एक कस्टम मॉडल बाइंडर (BlogPostModelBinder
) है जो बदले में कस्टम वैल्यू प्रदाता (BlogPostValueProvider
) का उपयोग करता है। जो मुझे समझ में नहीं आता है वह है कि मैं BlogPostValueProvider
में अनुरोध निकाय से डेटा कैसे प्राप्त कर सकता हूं?
मॉडल बाइंडर के अंदर यह है कि मैंने सोचा कि उदाहरण के लिए शीर्षक सही तरीके से प्राप्त करना सही तरीका होगा।
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
{
...
var title= bindingContext.ValueProvider.GetValue("Title");
...
}
BlogPostValueProvider इस तरह दिखता है, जबकि:
public class BlogPostValueProvider : IValueProvider
{
public BlogPostValueProvider(HttpActionContext actionContext)
{
// I can find request header information in the actionContext, but not the body.
}
public ValueProviderResult GetValue(string key)
{
// In some way return the value from the body with the given key.
}
}
यह एक आसान तरीका में व्याख्या करने योग्य हो सकता है, लेकिन जब से मैं वेब एपीआई की खोज कर रहा हूँ यह है कि यह काम करने के लिए प्राप्त करने के लिए अच्छा होगा।
मेरी समस्या यह है कि मुझे नहीं पता कि अनुरोध निकाय कहां संग्रहीत किया जाता है।
किसी भी मार्गदर्शन के लिए धन्यवाद!
आपके अनुरोध सामग्री प्रकार क्या है actionContext में ActionArguments उपयोग करने के लिए था ... मैं हूँ formurlencoded मानते हैं ... ... क्या आप एक कस्टम मॉडल बाइंडर की आवश्यकता क्यों है, इसके बारे में अधिक जानकारी दे सकते हैं ... –
यदि आप BlogPostVM का एक जेसन पोस्ट कर रहे हैं तो आपको केवल एक कार्यवाही की आवश्यकता है जो BlogPostVM स्वीकार करता है, कस्टम बाइंडर्स की आवश्यकता नहीं है। –
मुझे लगता है कि आप दोनों सही हैं। अनुरोध में ContentType json @KiranChalla पर सेट है। ब्लॉगपॉस्ट प्रकार के पैरामीटर के साथ कार्रवाई करने से यह हो सकता है। मैं अभी भी जानना चाहूंगा कि मैं मूल्य प्रदाता के भीतर से अनुरोध के शरीर तक क्यों नहीं पहुंच सकता। –