【Web.路由】——路由简介

Asp.net Core中的web开发框架一般用于创建B/S结构的应用程序(B表示浏览器端,S表示服务器端)。

我们可以用mvc框架,或者blazor框架开发一个web应用程序。用户想访问web应用程序的时候 ,就要使用浏览器输入网址找到你的应用程序。

也就是,浏览器向服务器端发送http请求,服务器去响应http请求。这个响应,时服务器端经过依次路由选择,来选择用户想要访问的资源(如图片,音乐,视频等)返回给浏览器。

然后浏览器再通过html返回给用户查看。用户请求响应在服务器中就是i选择正确的终结点。终结点是一个抽象的概念,类似于一个带着资源的委托。

简单来说,asp.Net Core的路由机制,就是

(1). 用户发起一个 HTTP 请求(包含请求的地址和一些附加信息)。

-------------------------------------------------------------------------
(2). HTTP 请求到达 Web 服务器后,路由系统开始工作:


1) 应用程序在第一次启动时,将所有的控制器下的操作组织在一起,按内
部规则转换为多个终结点,一个控制器+操作就是一个终结点。


2) 根据 URL 格式将生成的请求 URL 与终结点建立对应关系,此时已形成
一张路由表。


3) 当有请求 URL 进来后,就会在路由表中进行匹配,找到最佳终结点。

4) 最后执行匹配到的终结点(请求委托),找到正确的资源。


5) 将资源返回给客户端(浏览器)。

-------------------------------------------------------------------------
(3). 用户最终看到返回的结果(根据关键字在百度找到想要的内容)。

具体代码中,asp.net Core的路由系统是由 UseRouting()和UseEndpoints()这 2 个中间件处理的。

在 Program.cs 中,会生成通用主机和 Web 主机,而 ASP.NETCore Mvc 应用程序就是运行在 Web 主机上的。在构建 Web 主机后,会添加一个用于路由系统的基础服务,需要用AddRouting()方法注册。

于是在program中的配置如下

app.UseRouting();


app.MapControllerRoute(
name:"dafault",
pattern:"{controller=Home}/{action=Index}/{id?}");

UseRouting()和 MapControllerRoute()中间件必须联合执行,二者不可分开执行。

其中

(1). UseRouting():用于将收集应用程序中所有控制器下的操作,并转换为对
应的终结点,生成路由表,并根据当前请求路径匹配到最佳终结点。
(2). MapControllerRoute():执行匹配到的最佳终结点,找到资源。

如果增加了权限管理,一般在UseRouting和map之间使用 UseAuthorization()用于授权。

然后在program运行后,web主机就跑起来了。

当运行了这个程序,我们输入一个url,比如说是localhost:7015,他是默认访问/Home/Index下的资源。也就是说我们访问/Home/Index 时,会进入路由系统,根据这个请求路径(/Home/Index)在路由表中找到对应的终结点。然后执行终结点,找到 Index()操作

而index操作是在控制器(controller中)实现的。而此控制器下的Index操作返回的是默认视图,index.cshtml——>里面我们编写razor语言,通过razor视图处理过后得到html再返回给浏览器。

最终得到的结果,返回到前端给用户看到的,就是解析后的结果了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matrix Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值