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

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

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

路由基础

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

  • 将传入的请求映射到路由处理程序

  • 生成响应中使用的URL

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

网址匹配

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

IRouter实例通过将RouteContext Handler设置为非null的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