রাউটিং রিকোয়েস্টকে রুট হ্যান্ডলারের সাথে ম্যাপ করতে ব্যবহৃত হয়।
অ্যাপ্লিকেশন শুরু হলে রুটগুলো কনফিগার করা হয় এবং URL থেকে মান বের করা যায় যা রিকোয়েস্ট প্রসেসিং-এ ব্যবহৃত হবে।
রাউটিং বেসিক
রাউটিং রুট (IRouter ইমপ্লিমেন্টেশন) ব্যবহার করে:
- আমanet রিকোয়েস্টকে রুট হ্যান্ডলারের সাথে ম্যাপ করতে
- রেসপন্সে ব্যবহৃত URL জেনারেট করতে
RouterMiddleware ক্লাসের মাধ্যমে রাউটিং মিডলওয়্যার পাইপলাইনের সাথে সংযুক্ত থাকে। ASP.NET MVC এর কনফিগারেশনের অংশ হিসেবে রাউটিং মিডলওয়্যার পাইপলাইনে যোগ করা হয়।
URL ম্যাচিং
আমanet রিকোয়েস্ট RouterMiddleware-এ প্রবেশ করে যা প্রতিটি রুটের ওপর ক্রমাগত RouteAsync মেথড কল করে।
IRouter ইনস্ট্যানস RouteContext Handler-কে নন-নাল RequestDelegate-এ সেট করে রিকোয়েস্ট হ্যান্ডেল করতে চায় কিনা তা বেছে নেয়।
যদি একটি রুটের জন্য হ্যান্ডলার সেট করা থাকে, তবে এটি রিকোয়েস্ট প্রসেস করতে আহ্বান করা হবে এবং আর কোনো রুট প্রসেস করা হবে না।
যদি সমস্ত রুট এক্সিকিউট হয়ে যায় এবং কোনো রিকোয়েস্টের জন্য হ্যান্ডলার পাওয়া না যায়, তবে মিডলওয়্যার next কল করে এবং রিকোয়েস্ট পাইপলাইনের পরবর্তী মিডলওয়্যারটি আহ্বান করা হয়।
URL জেনারেশন
URL জেনারেশন একটি অনুরূপ পুনরাবৃত্তিমূলক প্রক্রিয়া অনুসরণ করে, কিন্তু এটি ব্যবহারকারী বা ফ্রেমওয়ার্ক কোড দ্বারা রুট কালেকশনের GetVirtualPath মেথড কল করার সাথে শুরু হয়।
প্রতিটি রুটের GetVirtualPath মেথড ক্রমাগত কল করা হবে যতক্ষণ না নন-নাল VirtualPathData ফেরত দেওয়া হয়।
রুট তৈরি করা
রাউটিং Route ক্লাস প্রদান করে IRouter-এর стандарт ইমপ্লিমেন্টেশন হিসেবে। RouteAsync কল হলে Route রুট টেমপ্লেট সিনট্যাক্স ব্যবহার করে প্যাটার্ন সংজ্ঞায়িত করে যা URL পাথের সাথে ম্যাচ করবে।
GetVirtualPath কল হলে Route একই রুট টেমপ্লেট ব্যবহার করে URL জেনারেট করে।
উদাহরণ
routes.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}");
ফ্রেমওয়ার্ক রুট তৈরির জন্য এক্সটেনশন মেথডের একটি সেট প্রদান করে যেমন:
MapRoute MapGet MapPost MapPut MapRoute MapVerb