C# ASP.NET Core 中的路由是什么?


路由用于将请求映射到路由处理程序。

路由在应用程序启动时配置,并且可以从 URL 中提取用于请求处理的值。

路由基础

路由使用路由(IRouter 的实现)

  • 将传入请求映射到路由处理程序
  • 生成响应中使用的 URL

路由通过 RouterMiddleware 类连接到中间件管道。ASP.NET MVC 在其配置的一部分中将路由添加到中间件管道。

URL 匹配

传入请求进入 RouterMiddleware,后者依次调用每个路由上的 RouteAsync 方法。

IRouter 实例通过将 RouteContext Handler 设置为非空 RequestDelegate 来选择是否处理请求。

如果为路由设置了处理程序,则将调用它来处理请求,并且不会处理其他路由。

如果所有路由都已执行,并且找不到请求的处理程序,则中间件调用 next,并且调用请求管道中的下一个中间件。

URL 生成

URL 生成遵循类似的迭代过程,但从用户或框架代码调用路由集合的 GetVirtualPath 方法开始。

然后,将依次调用每个路由的 GetVirtualPath 方法,直到返回非空 VirtualPathData。

创建路由

路由提供 Route 类作为 IRouter 的标准实现。Route 使用路由模板语法定义在调用 RouteAsync 时将与 URL 路径匹配的模式。

当调用 GetVirtualPath 时,Route 将使用相同的路由模板生成 URL。

示例

routes.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}");

框架提供了一组用于创建路由的扩展方法,例如:

MapRoute
MapGet
MapPost
MapPut
MapRoute
MapVerb

更新于: 2020-09-24

4K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告