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

C# ASP.NET Core में रूटिंग क्या है?

रूटिंग का उपयोग इनकमिंग रिक्वेस्ट को रूट हैंडलर्स पर मैप करने के लिए किया जाता है। रूट्स को एप्लिकेशन स्टार्टअप पर कॉन्फिगर किया जाता है, और ये URL से मान निकाल सकते हैं जिनका उपयोग रिक्वेस्ट प्रोसेसिंग के लिए किया जाता है।

रूटिंग की मूल बातें

रूटिंग IRouter के इम्प्लीमेंटेशन (रूट्स) का उपयोग करता है:

  • इनकमिंग रिक्वेस्ट को रूट हैंडलर्स पर मैप करना
  • रिस्पॉन्स में उपयोग के लिए URLs जनरेट करना

रूटिंग RouterMiddleware क्लास द्वारा मिडलवेयर पाइपलाइन से जुड़ा होता है। ASP.NET MVC अपनी कॉन्फिगरेशन के हिस्से के रूप में रूटिंग को मिडलवेयर पाइपलाइन में जोड़ता है।

URL मैचिंग

  1. इनकमिंग रिक्वेस्ट RouterMiddleware में प्रवेश करती है
  2. RouterMiddleware प्रत्येक रूट पर क्रम से RouteAsync मेथड कॉल करता है
  3. IRouter इंस्टेंस तय करता है कि रिक्वेस्ट को हैंडल करना है या नहीं, RouteContext.Handler को नॉन-नल RequestDelegate पर सेट करके
  4. अगर हैंडलर सेट है, तो रिक्वेस्ट प्रोसेस करने के लिए इनवोक किया जाता है और आगे के रूट्स प्रोसेस नहीं होते
  5. अगर सभी रूट्स एक्जीक्यूट हो जाते हैं और कोई हैंडलर नहीं मिलता, तो मिडलवेयर next कॉल करता है और पाइपलाइन में अगला मिडलवेयर इनवोक होता है

URL जनरेशन

URL जनरेशन एक समान पुनरावृत्त प्रक्रिया का पालन करता है, लेकिन यूजर या फ्रेमवर्क कोड द्वारा रूट कलेक्शन के GetVirtualPath मेथड को कॉल करने से शुरू होता है। प्रत्येक रूट का GetVirtualPath मेथड क्रम से तब तक कॉल किया जाता है जब तक नॉन-नल VirtualPathData वापस नहीं आता।

रूट्स बनाना

रूटिंग Route क्लास को IRouter के स्टैंडर्ड इम्प्लीमेंटेशन के रूप में प्रदान करता है। Route रूट टेम्पलेट सिंटैक्स का उपयोग करके पैटर्न परिभाषित करता है जो RouteAsync कॉल होने पर URL पथ के विरुद्ध मैच होंगे। वही रूट टेम्पलेट GetVirtualPath कॉल होने पर URL जनरेट करने के लिए उपयोग होता है।

रूट टेम्पलेट उदाहरण

// डिफ़ॉल्ट रूट टेम्पलेट
routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{id?}"
);

टेम्पलेट भागों की व्याख्या:

  • {controller=Home} - कंट्रोलर सेगमेंट, डिफ़ॉल्ट "Home"
  • {action=Index} - एक्शन सेगमेंट, डिफ़ॉल्ट "Index"
  • {id?} - वैकल्पिक ID पैरामीटर (? वैकल्पिक दर्शाता है)

रूट बनाने के लिए एक्सटेंशन मेथड्स

// पारंपरिक रूटिंग
MapRoute
MapAreaRoute

// एट्रिब्यूट रूटिंग (अधिक सामान्य आधुनिक दृष्टिकोण)
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
    [HttpGet("{id}")]
    public IActionResult Get(int id) { ... }
    
    [HttpPost]
    public IActionResult Create(Product product) { ... }
}

एट्रिब्यूट रूटिंग vs पारंपरिक रूटिंग

विशेषतापारंपरिक रूटिंगएट्रिब्यूट रूटिंग
परिभाषा स्थानStartup.cs में केंद्रीयकृतकंट्रोलर/एक्शन पर एट्रिब्यूट्स
लचीलापनसीमितउच्च - RESTful APIs के लिए बेहतर
रखरखावबड़े ऐप्स के लिए कठिनआसान - रूट्स कोड के साथ रहते हैं
API के लिए उपयुक्तनहींहां - REST पैटर्न के लिए आदर्श

रूट कंस्ट्रेंट्स

// इंट कंस्ट्रेंट
[HttpGet("{id:int}")]

// स्ट्रिंग लंबाई कंस्ट्रेंट
[HttpGet("{name:minlength(3):maxlength(20)}")]

// रेगेक्स कंस्ट्रेंट
[HttpGet("{slug:regex(^[a-z0-9-]+$)}")]

// GUID कंस्ट्रेंट
[HttpGet("{id:guid}")]

// कस्टम कंस्ट्रेंट
[HttpGet("{id:mycustomconstraint}")]

आधुनिक ASP.NET Core ( .NET 6+) में: मिनिमल APIs और एंडपॉइंट रूटिंग का उपयोग करें:

var app = WebApplication.CreateBuilder(args).Build();

app.MapGet("/products/{id:int}", (int id) => Results.Ok(GetProduct(id)));
app.MapPost("/products", (Product p) => Results.Created($"/products/{p.Id}", p));

app.Run();
  1. C# ASP.NET MVC में डिफ़ॉल्ट रूट के तीन सेगमेंट्स क्या हैं? C# ASP.NET MVC में डिफ़ॉल्ट रूट के तीन सेगमेंट्स क्या हैं?

    ASP.NET MVC रूटिंग मॉड्यूल इनकमिंग ब्राउज़र रिक्वेस्ट्स को विशेष MVC कंट्रोलर एक्शन्स पर मैप करने के लिए जिम्मेदार होता है। जब ASP.NET MVC एप्लिकेशन लॉन्च होता है, तो एप्लिकेशन फ्रेमवर्क के रूट टेबल के साथ एक या अधिक पैटर्न रजिस्टर करता है ताकि रूटिंग इंजन को बताया जा सके कि उन पैटर्न्स से मेल खाने

  1. C# ASP.NET MVC में NonActionAttribute का महत्व क्या है? C# ASP.NET MVC में NonActionAttribute का महत्व क्या है?

    NonAction एट्रिब्यूट का उपयोग तब किया जाता है जब हम एक कंट्रोलर में एक पब्लिक मेथड चाहते हैं लेकिन उसे एक्शन मेथड के रूप में ट्रीट नहीं करना चाहते। एक एक्शन मेथड एक कंट्रोलर में एक पब्लिक मेथड है जिसे URL का उपयोग करके इनवोक किया जा सकता है। इसलिए, डिफ़ॉल्ट रूप से, यदि कंट्रोलर में कोई पब्लिक मेथड ह

  1. C# ASP.NET WebAPI में बिल्ट-इन मैसेज हैंडलर्स क्या हैं? C# ASP.NET WebAPI में बिल्ट-इन मैसेज हैंडलर्स क्या हैं?

    एक मैसेज हैंडलर एक क्लास है जो HTTP रिक्वेस्ट प्राप्त करती है और HTTP रिस्पॉन्स लौटाती है। मैसेज हैंडलर्स एब्स्ट्रैक्ट HttpMessageHandler क्लास से डेराइव होते हैं। मैसेज हैंडलर्स हमें HttpControllerDispatcher तक पहुंचने से पहले इनकमिंग रिक्वेस्ट को प्रोसेस, एडिट, या अस्वीकार करने का अवसर प्रदान करते