路由用于将请求映射到路由处理程序。
路由是在应用程序启动时配置的,并且可以从URL中提取值以用于请求处理。
路由使用路由(IRouter的实现)
将传入的请求映射到路由处理程序
生成响应中使用的URL
路由通过RouterMiddleware类连接到中间件管道。ASP.NET MVC作为其配置的一部分,将路由添加到中间件管道
传入请求进入RouterMiddleware,后者依次在每个路由上调用RouteAsync方法。
IRouter实例通过将RouteContext Handler设置为非null的RequestDelegate来选择是否处理请求。
如果将处理程序设置为路由,则会调用该处理程序来处理请求,并且不会再处理其他路由。
如果执行了所有路由,并且未找到用于请求的处理程序,则中间件将调用next,然后调用请求管道中的下一个中间件。
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