Back
Mastering Endpoint Routing in ASP.NET Core: Configuration & Examples

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

Leave a Comment