जब ASP.NET वेब API किसी नियंत्रक पर किसी विधि को कॉल करता है, तो उसे पैरामीटर के लिए मान सेट करना चाहिए, एक प्रक्रिया जिसे पैरामीटर बाइंडिंग कहा जाता है।
एक मॉडल (एक एक्शन पैरामीटर) को बांधने के लिए, जो सामान्य रूप से एक फॉर्मेटर के लिए डिफ़ॉल्ट होगा, यूआरआई से हमें इसे [FromUri] विशेषता के साथ सजाने की जरूरत है। FromUriAttribute केवल ModelBinderAttribute से विरासत में मिला है, जो हमें IuriValueProviderFactory में परिभाषित ValueProviders का उपयोग करके URI से विशिष्ट पैरामीटर प्राप्त करने के लिए वेब API को निर्देश देने के लिए एक शॉर्टकट निर्देश प्रदान करता है। विशेषता को स्वयं सील कर दिया गया है और इसे आगे नहीं बढ़ाया जा सकता है, लेकिन आप अपनी इच्छानुसार कई कस्टम IuriValueProviderFactories जोड़ते हैं।
[FromBody] विशेषता जो ParameterBindingAttribute क्लास को इनहेरिट करती है, एक HTTP अनुरोध के मुख्य भाग से एक पैरामीटर और उसके गुणों को पॉप्युलेट करने के लिए उपयोग किया जाता है। ASP.NET रनटाइम एक इनपुट फॉर्मेटर को बॉडी को पढ़ने की जिम्मेदारी सौंपता है। जब [FromBody] को जटिल प्रकार के पैरामीटर पर लागू किया जाता है, तो इसके गुणों पर लागू किसी भी बाध्यकारी स्रोत विशेषताओं को अनदेखा कर दिया जाता है।
FromUri विशेषता के लिए उदाहरण -
उदाहरण
using System.Collections.Generic; using System.Web.Http; namespace DemoWebApplication.Controllers{ public class DemoController : ApiController{ public IEnumerable<string> Get([FromUri] string id, [FromUri] string name){ return new string[]{ $"The Id of the Student is {id}", $"The Name of the Student is {name}" }; } } }
उपरोक्त उदाहरण के लिए, आइए हम यूआरआई में आईडी और नाम के मान को गेट विधि में उनके संबंधित चर में पॉप्युलेट करने के लिए पास करें।
https://localhost:58174/api/demo?id=1&name=Mark
आउटपुट
उपरोक्त कोड का आउटपुट है
फ्रॉमबॉडी एट्रिब्यूट के लिए उदाहरण -
उदाहरण
आइए हम एक छात्र मॉडल बनाते हैं जिसमें निम्न गुण होते हैं।
namespace DemoWebApplication.Models{ public class Student{ public int Id { get; set; } public string Name { get; set; } } }
नियंत्रक कोड -
उदाहरण
using DemoWebApplication.Models; using System.Collections.Generic; using System.Web.Http; namespace DemoWebApplication.Controllers{ public class DemoController : ApiController{ public IEnumerable<string> Get([FromBody] Student student){ return new string[]{ $"The Id of the Student is {student.Id}", $"The Name of the Student is {student.Name}" }; } } }
उपरोक्त उदाहरण के लिए छात्र के लिए मूल्य अनुरोध निकाय में पारित किया गया है और इसे छात्र वस्तु की संबंधित संपत्ति में मैप किया गया है। पोस्टमैन का उपयोग करते हुए अनुरोध और प्रतिक्रिया नीचे दी गई है।