Mastering Endpoint Routing in ASP.NET Core: Configuration & Examples
Routing is the process of mapping incoming HTTP requests to application logic in an ASP.NET Core application.
1. What is Routing?
Routing helps direct HTTP requests to controllers, actions, or endpoints.
2. Configuring Routing in ASP.NET Core
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseRouting();
app.UseEndpoints(endpoints => {
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
app.Run();
3. Conventional Routing
app.UseEndpoints(endpoints => {
endpoints.MapControllerRoute(
name: "custom",
pattern: "blog/{articleId}",
defaults: new { controller = "Blog", action = "Details" }
);
});
4. Attribute Routing
[Route("products")]
public class ProductsController : Controller {
[HttpGet("{id}")]
public IActionResult GetProduct(int id) {
return Content($"Product ID: {id}");
}
}
5. Endpoint Routing
var app = WebApplication.CreateBuilder(args).Build();
app.UseRouting();
app.UseEndpoints(endpoints => {
endpoints.MapGet("/hello", async context => {
await context.Response.WriteAsync("Hello, World!");
});
});
app.Run();
6. Route Constraints
[HttpGet("details/{id:int}")]
public IActionResult GetOrder(int id) {
return Content($"Order ID: {id}");
}
7. Custom Route Constraints
public class EvenNumberConstraint : IRouteConstraint {
public bool Match(HttpContext? httpContext, IRouter? route, string routeKey,
RouteValueDictionary values, RouteDirection routeDirection) {
if (values.TryGetValue(routeKey, out var value) && int.TryParse(value?.ToString(), out int id)) {
return id % 2 == 0;
}
return false;
}
}
8. Route Parameters and Defaults
app.UseEndpoints(endpoints => {
endpoints.MapControllerRoute(
name: "optional",
pattern: "blog/{id?}",
defaults: new { controller = "Blog", action = "Details" }
);
});
9. Route Prefix in Attribute Routing
[Route("api/products")]
public class ProductsController : Controller {
[HttpGet]
public IActionResult GetAll() => Content("All Products");
}
10. Generating URLs in ASP.NET Core
public IActionResult Index() {
string url = Url.Action("Details", "Blog", new { id = 5 });
return Content($"Generated URL: {url}");
}
Conclusion
- Routing directs requests to appropriate actions.
- Conventional routing follows predefined patterns.
- Attribute routing is defined directly on controllers.
- Endpoint routing improves flexibility.
Comments - Beta - WIP