在构建现代 Web 应用程序时,路由是连接客户端请求与服务器处理逻辑的桥梁。在 ASP.NET Core 中,端点路由(Endpoint Routing) 是一种强大而灵活的机制,它允许开发者以声明式方式将 HTTP 请求映射到具体的处理程序(如控制器、Razor Pages 或 Minimal API)。本文将带你从零开始,深入浅出地掌握 ASP.NET Core 端点路由 的核心概念、配置方法以及与中间件的协同工作方式。
端点路由是 ASP.NET Core 3.0 引入的一项重大改进,它将路由匹配逻辑从 MVC 框架中解耦出来,使其成为整个中间件管道的一部分。这意味着不仅 MVC 控制器可以使用路由,Razor Pages、SignalR、gRPC 甚至自定义中间件也可以参与路由决策。
简单来说,端点 就是应用程序中能够处理特定 HTTP 请求的“终点”,比如一个控制器动作(Action)或一个 Minimal API 方法。而 端点路由 则负责根据 URL、HTTP 方法等信息,将请求精准地分发到对应的端点。
在 ASP.NET Core 项目中,端点路由通常在 Program.cs(.NET 6+)或 Startup.cs 中配置。以下是一个典型的 .NET 8 项目中的配置示例:
var builder = WebApplication.CreateBuilder(args);// 添加服务到容器builder.Services.AddControllers();var app = builder.Build();// 配置 HTTP 请求管道if (!app.Environment.IsDevelopment()){ app.UseExceptionHandler("/Error"); app.UseHsts();}app.UseHttpsRedirection();app.UseStaticFiles();// 启用路由app.MapControllers(); // 这行代码启用了基于控制器的端点路由app.Run(); 注意:app.MapControllers() 是关键!它告诉 ASP.NET Core 扫描所有带有 [ApiController] 或 [Route] 特性的控制器,并为它们注册路由端点。
你可以通过特性(Attribute)在控制器或动作方法上定义路由规则。这是最常用的方式:
[ApiController][Route("api/[controller]")]public class ProductsController : ControllerBase{ [HttpGet] // 匹配 GET /api/products public IEnumerable<string> Get() { return new[] { "Product1", "Product2" }; } [HttpGet("{id}")] // 匹配 GET /api/products/5 public string GetById(int id) { return $"Product {id}"; } [HttpPost] // 匹配 POST /api/products public IActionResult Create([FromBody] Product product) { // 处理创建逻辑 return CreatedAtAction(nameof(GetById), new { id = 1 }, product); }} 在这个例子中,我们使用了 ASP.NET Core Web API 路由 的常见模式:[controller] 会被替换为控制器名称(去掉“Controller”后缀),因此 ProductsController 对应 /api/products。
理解 中间件与端点路由 的执行顺序至关重要。中间件按注册顺序依次执行,直到某个中间件“终结”请求(如返回响应)或调用下一个中间件。端点路由中间件会在匹配到端点后,将控制权交给该端点的处理程序。
例如,你可以添加一个自定义中间件来记录所有进入端点的请求:
app.Use(async (context, next) =>{ Console.WriteLine($"请求进入:{context.Request.Path}"); await next(); // 继续执行管道 Console.WriteLine($"请求完成:{context.Response.StatusCode}");});app.MapControllers(); // 端点路由在此之后生效 注意:自定义中间件必须在 MapControllers() 之前注册,否则无法在端点执行前后插入逻辑。
通过本文,你已经掌握了 ASP.NET Core 端点路由 的基本原理和配置方法。无论是构建 RESTful API 还是传统 Web 应用,合理使用端点路由都能让你的代码更加清晰、可维护。
记住几个关键点:
MapControllers() 启用基于控制器的路由[Route]、[HttpGet] 等特性定义路由模板现在,你可以自信地在自己的 ASP.NET Core 项目中使用端点路由了!如果你有任何疑问,欢迎在评论区留言交流。
本文由主机测评网于2025-12-04发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122708.html