asp.net-core
रूटिंग
खोज…
बेसिक रूटिंग
app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); });
यह /Home/Index
, /Home/Index/123
और /
लिए अनुरोधों का मिलान करेगा
रूटिंग बाधाओं
कस्टम रूटिंग बाधा बनाना संभव है जो विशिष्ट मानों या पैटर्न के पैरामीटर को कसने के लिए मार्गों के अंदर उपयोग किया जा सकता है।
यह अड़चन एक विशिष्ट संस्कृति / लोकेल पैटर्न से मेल खाएगी, जैसे कि एन-यूएस, डी-डे, ज़ी-सीएचटी, ज़िया-हंट।
public class LocaleConstraint : IRouteConstraint
{
private static readonly Regex LocalePattern = new Regex(@"^[a-z]{2}(-[a-z]{2,4})?$",
RegexOptions.Compiled | RegexOptions.IgnoreCase);
public bool Match(HttpContext httpContext, IRouter route, string routeKey,
RouteValueDictionary values, RouteDirection routeDirection)
{
if (!values.ContainsKey(routeKey))
return false;
string locale = values[routeKey] as string;
if (string.IsNullOrWhiteSpace(locale))
return false;
return LocalePattern.IsMatch(locale);
}
}
बाद में, मार्गों में उपयोग किए जाने से पहले बाधा को पंजीकृत करने की आवश्यकता होती है।
services.Configure<RouteOptions>(options =>
{
options.ConstraintMap.Add("locale", typeof(LocaleConstraint));
});
अब इसका उपयोग मार्गों के भीतर किया जा सकता है।
कंट्रोलर्स पर इसका उपयोग करना
[Route("api/{culture:locale}/[controller]")]
public class ProductController : Controller { }
इसका उपयोग क्रियाओं पर करना
[HttpGet("api/{culture:locale}/[controller]/{productId}"]
public Task<IActionResult> GetProductAsync(string productId) { }
डिफ़ॉल्ट रूट में इसका उपयोग करना
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "api/{culture:locale}/{controller}/{id?}");
routes.MapRoute(
name: "default",
template: "api/{controller}/{id?}");
});
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow