路由模板负责根据规则生成URL,从而使得请求可以正常访问到资源。
总之就是——》》》
规范如何写一个url,并且命名以方便进行管理。
在Asp.net core中的Http管道机制,UseRouting()和 UseEndpoints()这两个中间件来实现整个路由系统。关于asp.netCore中的路由的原理,可以看这篇文章。
在Web主机启动后,会进行路由配置,首先就是根据路由配置的URL模板去生成URL,并结合Controller和Action为终结点。
这个URL模板是在UseEndPoints()方法委托参数MapControllerRoute()方法配置的。
模板参数
在MapControllerRoute()方法中
(1). Name 称为路由模板的名称。
(2). Pattern 称为路由模板的 URL 模式,Pattern 本身的含义就是模式,这是在ASP.NET Core 3.x 及高版本修改后的参数名称。(3). constrains:路由约束
。。。
在一个Web应用中,可以配置多个路由模板来适应多种URL,其中只需要Name不同即可。
URL模式
组成部分
(1). 一对花括号{}:必须存在,表示一个占位符。
(2). 路径分隔符:/,由分隔符隔开的称为段,必须存在路径分隔符,默认情况下控制器、操作和参数之间必须使用/作为路径分隔符,参数后面可以使用*来实现任意的 URL 段_>任意格式的URL
(3). 路由参数:如 controller、action,由于 MVC 中路由就是根据控制器和操作定位资源的,所以这 2 个参数必须存在,也可以有其它的路由参数。如controller=Home,controller 就是路由参数。
(4). 路由参数值:路由参数后面使用=赋值,这个值就是数由参数值。如controller=Home,Home 就是路由参数值。(5). 可选参数:使用 ?跟随的称为可选参数,可有可无。如 id?表示 id 参数是可选的。
路由参数
必选参数
从这个路由模板来看,{controller}和{action}是约定的,不可省略或修改成别的名称
(1). {controller}表示控制器占位符,其中 controller 替换为控制器的具体名称,如 Home,就表示 HomeController 控制器,去掉后缀。
(2). {action}表示操作占位符,其中 action 替换为操作的具体名称,也就是控制器下操作方法的名称。如 Index,就表示 Index()操作方法。
(3). 同时,还给 controller 指定默认的值是 Home,action 指定默认值是Index。当在 URL 上未指定控制器和操作时,默认使用 Home 和 Index 访问。
当没有配置的时候,可能会返回一个未响应的页面。
可选参数
顾名思义,就是可以没有这个参数。
对于路由模板中的{id?}表示可选参数,也就是 id 这个参数可以有,也可以没有。
我们可以看一下默认的控制器中的方法
这个是在home控制器下,由于在 URL 上,id 参数是放在/Home/Index/后面的,所以就认为
id 是 Index()方法的参数,可以是任意类型。
在asp.net core的操作是——>
url——>控制器——>控制器中的方法——>参数绑定——>razor页面去将参数进行显示。
比如到最后的razor中是
这样就将url中的id直接赋值到前端UI中了。
关于路径分隔符,固定URL段和通配符
对于正常的 URL 地址,都是由 / 分隔符将路由段分开的,因此——————>
在 URL 默认的模式中,也是使用 / 将控制器、操作、参数分开
使用规范的/
使用固定URL段
使用通配符*
使用通配符的注意事项
(1). 必须在{}内使用。
(2). 必须放在路由参数的前面。
(3). 路由参数不能是可选的。
(4). 必须是 URL 模式中最后一个 URL 段。
今天就分享到这里。同时欢迎关注gzh——》上位机PLC自动化技术研究