मिडलवेयर ऐसे सॉफ़्टवेयर घटक हैं जिन्हें अनुरोधों और प्रतिक्रियाओं को संभालने के लिए एक एप्लिकेशन पाइपलाइन में इकट्ठा किया जाता है।
प्रत्येक घटक चुनता है कि पाइपलाइन में अगले घटक को अनुरोध पास करना है या नहीं, और पाइपलाइन में अगले घटक को शामिल करने से पहले और बाद में कुछ क्रियाएं कर सकता है।
पाइप लाइन को ब्रांच करने के लिए मैप एक्सटेंशन का उपयोग कन्वेंशन के रूप में किया जाता है।
अनुरोध के पथ के आधार पर अनुरोध प्रतिनिधियों से मिलान करने के लिए मानचित्र विस्तार विधि का उपयोग किया जाता है। नक्शा बस एक पथ और एक फ़ंक्शन को स्वीकार करता है जो एक अलग मिडलवेयर पाइपलाइन को कॉन्फ़िगर करता है।
निम्नलिखित उदाहरण में, /maptest के आधार पथ के साथ किसी भी अनुरोध को HandleMapTest विधि में कॉन्फ़िगर की गई पाइपलाइन द्वारा नियंत्रित किया जाएगा।
उदाहरण
private static void HandleMapTest(IApplicationBuilder app){ app.Run(async context =>{ await context.Response.WriteAsync("Map Test Successful"); }); } public void ConfigureMapping(IApplicationBuilder app){ app.Map("/maptest", HandleMapTest); }
पथ-आधारित मानचित्रण के अलावा, मैपव्हेन विधि विधेय-आधारित मिडलवेयर ब्रांचिंग का समर्थन करती है, जिससे अलग पाइपलाइनों को एक बहुत ही लचीले फैशन में बनाया जा सकता है।
Func
private static void HandleBranch(IApplicationBuilder app){ app.Run(async context =>{ await context.Response.WriteAsync("Branch used."); }); } public void ConfigureMapWhen(IApplicationBuilder app){ app.MapWhen(context => { return context.Request.Query.ContainsKey("branch"); }, HandleBranch); app.Run(async context =>{ await context.Response.WriteAsync("Hello from " + _environment); }); }
मैप्स को नेस्ट भी किया जा सकता है
app.Map("/level1", level1App => { level1App.Map("/level2a", level2AApp => { // "/level1/level2a" //... }); level1App.Map("/level2b", level2BApp => { // "/level1/level2b" //... }); });