ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的。如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间件的意义在于实现请求路径与对应HttpHandler之间的映射关系。对于传递给RouterMiddleware中间件的每一个请求,它会通过分析请求URL的模式并选择并提取对应的HttpHandler来处理该请求。除此之外,请求的URL还会携带相应参数,该中间件在进行路由解析过程中还会根据生成相应的路由参数提供给处理该请求的Handler。为了让读者朋友们对实现在RouterMiddleware的路由功能具有一个大体的认识,我们照例先来演示几个简单的实例。[本文已经同步到《ASP.NET Core框架揭秘》之中]
目录
一、注册请求路径与HttpHandler之间的映射
二、设置内联约束
三、为路由参数设置默认值
四、特殊的路由参数
一、注册请求路径与HttpHandler之间的映射
ASP.NET Core针对请求的处理总是在一个通过HttpContext对象表示的上下文中进行,所以上面我们所说的HttpHandler从编程的角度来讲体现为一个RequestDelegate的委托对象,因此所谓的“路由注册”就是注册一组具有相同默认的请求路径与对应RequestDelegate之间的映射关系。接下来我们就同一个简单的实例来演示这样的映射关系是如何通过注册RouterMiddleware中间件的方式来完成的。
我们演示的这个ASP.NET Core应用是一个简易版的天气预报站点。如果用户希望获取某个城市在未来N天之内的天气信息,他可以直接利用浏览器发送一个GET请求并将对应城市(采用电话区号表示)和天数设置在URL中。如下图所示,为了得到成都未来两天的天气信息,我们发送请求采用的路径为“weather/028/2”。对于路径“weather/0512/4”的请求,返回的自然就是苏州未来4天的添加信息。
延伸阅读
学习是年轻人改变自己的最好方式