खोज…


परिचय

जैसा कि नाम से पता चलता है, यह मार्ग के लिए विशेषताओं का उपयोग करता है। यह उपयोगकर्ता को WebAPI में URI के नियंत्रण पर अधिक नियंत्रण देता है। उदाहरण के लिए, आप संसाधन के पदानुक्रम का वर्णन कर सकते हैं। हालाँकि, पहले वाला 'कन्वेंशनल रूटिंग' पूरी तरह से समर्थित है। उपयोगकर्ताओं के पास दोनों का मिश्रण भी हो सकता है।

वाक्य - विन्यास

  • [रूटप्रिफ़िक्स ("एपी / किताबें")] - नियंत्रक वर्ग के लिए
  • [रूट ("getById")] - क्रियाओं के लिए
  • [रूट ("~ / एपीआई / लेखक / {लेखक: int} / किताबें")] - ओवरराइडिंग रूट के लिए उपसर्ग

पैरामीटर

मापदण्ड नाम विवरण
RoutePrefix नियंत्रक वर्ग के लिए विशेषता। क्रियाओं में सभी सामान्य url उपसर्गों को यहां क्लब किया गया है। इनपुट के रूप में स्ट्रिंग लेता है
मार्ग नियंत्रक क्रियाओं की विशेषता। प्रत्येक कार्य के साथ रूट असोसिट किया जाएगा (जरूरी नहीं)
रूट ( "~ / api /") यह रूट उपसर्ग को ओवरराइड करता है

टिप्पणियों

वर्तमान में, गुण मार्गों में Controller specific Message Handlers । जैसा कि घोषणा के समय किस मार्ग के लिए किस हैंडलर को निष्पादित करने के लिए निर्दिष्ट करने का कोई तरीका नहीं है। यह Conventional Routing में संभव है।

बुनियादी विशेषता रूटिंग

बस नियंत्रक कार्रवाई के लिए एक विशेषता जोड़ें

[Route("product/{productId}/customer")]
public IQueryable<Product> GetProductsByCustomer(int productId) 
{ 
    //action code goes here 
}

यह /product/1/customer और productId=1 को नियंत्रक क्रिया के रूप में भेजा जाएगा।

सुनिश्चित करें कि '{}' और एक्शन पैरामीटर एक ही है। इस मामले में productId

इसे उपयोग करने से पहले, आपको यह निर्दिष्ट करना होगा कि आप एट्रीब्यूट रूटिंग का उपयोग कर रहे हैं:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
    }
}

रूट उपसर्ग विशेषता

ऐसे मामलों में जहां आपको नियंत्रक के भीतर सभी मार्गों के लिए मार्ग के एक सामान्य हिस्से की आवश्यकता होती है, RoutePrefix विशेषता का उपयोग किया जाता है।

नीचे दिए गए उदाहरण में, एपीआई / कोड का हिस्सा आम है और इसलिए हम RoutePrefix को परिभाषित कर सकते हैं और इसे बार-बार उपयोग करने से बच सकते हैं।

[RoutePrefix("api/students")]
public class StudentController : ApiController
{
[Route("")]
public IEnumerable<Student> Get() 
{
    //action code goes here 
}

[Route("{id:int}")]
public Student Get(int id) 
{
    //action code goes here 
}

[Route("")]
public HttpResponseMessage Post(Student student) 
{
    //action code goes here 
}

}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow