10 路由与中间件之理解路由

在上篇教程中,我们一起创建并运行了第一个 ASP.NET Core 应用,了解了其基本架构和运行机制。这一章节将深入探讨“路由”的概念,以帮助你更好地理解 ASP.NET Core 在处理 HTTP 请求时是如何工作的。

什么是路由?

在 ASP.NET Core 中,路由是将传入的 HTTP 请求映射到特定的处理程序(如控制器和动作方法)的一种机制。它决定了请求 URL 应该如何处理,并将请求引导至正确的代码路径。

路由主要依赖于以下几个部分:

  1. 请求 URL:用户通过浏览器请求的数据地址。
  2. 路由模板:定义 URL 格式的方法,通常包括变量部分。
  3. 终结点(Endpoints):处理请求的最终目标,通常指向控制器中的动作方法。

路由的基本工作原理

一个典型的路由工作机制如下:

  1. 接收到 HTTP 请求。
  2. 路由系统根据请求的 URL 与预定义的路由模板进行匹配。
  3. 找到匹配的终结点,并将请求转发至该终结点的处理函数(如控制器方法)。
  4. 处理函数执行相应的逻辑,并生成 HTTP 响应返回给客户端。

案例:简单的路由示例

假设我们有一个 ASP.NET Core 应用,其中有一个控制器 HomeController,包含一个简单的 Index 方法,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
using Microsoft.AspNetCore.Mvc;

namespace MyFirstApp.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return Content("欢迎来到首页");
}
}
}

在此示例中,Index 方法返回了一个简单的文本响应。当我们访问 http://localhost:5000/home/index 时,ASP.NET Core 的路由系统将匹配这个 URL,并找到对应的 HomeController.Index 方法进行处理。

路由的配置

在 ASP.NET Core 中,路由配置通常是在 Startup.cs 文件中进行。在 Configure 方法中,你会看到类似这样的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}

app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}

在这里,endpoints.MapControllerRoute 方法定义了一条路由:

  • 名称(name):路由的标识,这里用的是 "default"
  • 模式(pattern):定义 URL 的结构,包括{controller}{action} 和 可选的{id}

这意味着,当访问 http://localhost:5000/{controller}/{action}/{id} 时,ASP.NET Core 路由将根据 URL 的格式找到对应的控制器与动作。

路由参数

路由允许使用参数,你可以在 URL 中传递动态数据。例如,修改控制器中的方法以接受一个 id 参数:

1
2
3
4
public IActionResult Details(int id)
{
return Content($"你正在查看的项目ID是 {id}");
}

然后你可以访问 http://localhost:5000/home/details/5,路由将匹配到 Details 方法,并传递 5 作为参数。

小结

本节内容介绍了 ASP.NET Core 的路由机制以及基础配置。你现在应该对路由概念有所了解,并能够自行创建一些基础的路由规则。接下来,在下一篇教程中,我们将讨论如何配置中间件,这是 ASP.NET Core 应用中的另一个重要概念。

10 路由与中间件之理解路由

https://zglg.work/aspnet-core-zero/10/

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论