Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。
系列目录
1、Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行。
2、Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。
3、Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。
4、Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。
5、Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。
6、Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件。
7、Taurus.MVC WebAPI 入门开发教程7:业务逻辑基类LogicBase的使用。
8、Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。
后续还有两个系列:
1、Taurus.MVC 微服务 入门开发教程系列。 2、Taurus.MVC Web应用 入门开发教程系列。
前言:
本篇讲述进一步的控制器和路由规则。
1、路由规则的种类:
一共有3类:默认为1。
配置模式【值为0,1或2】[默认为1]
值为0:匹配{Action}/{Para}
值为1:匹配{Controller}/{Action}/{Para}
值为2:匹配{Module}/{Controller}/{Action}/{Para}
可以通过配置来切换类型:
web.config 配置:
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="Taurus.RouteMode" value="1"/>
</appSettings>
</configuration>
appsettings.json 配置:
{
"AppSettings": {"Taurus.RouteMode": 1
}
}
下面对三种类型做进一步讲解:
2、路由规则配置值0:匹配{Action}/{Para}
如果规则配置为0,则所有请求转入全局DefaultController,这是一个全局的控制器,后续会有一篇专门讲它。

根据规则,访问:

对不上规则的,还是同样404,根据上一篇,同理,可以通过重载Default,获得404的 拦截:
public partial class DefaultController : Controller
{
public void Hello()
{
Write("Default : Hello " + Para);
} public override void Default()
{
Write("Hello world");
}
}
拦截后,任意之前404的请求都跑到Default中,并输出:

3、路由规则配置值1:匹配{Controller}/{Action}/{Para}
注意事项:
控制器的名称是唯一的,同一个项目中不应该出现相同的控制器名称。 如果出现,是执行哪一个控制器呢?如果想知道,请理解以下的文字:
按控制器的上一级名称空间字符串比较,取最小值的为默认控制器:
如:名称空间:XXX.YYY.A.Controller与XX.YY.ZZ.B.Controller
这里仅比较A和B,A靠前,所以取A的为默认。
寻址规则:通过请求路径匹配控制器,如果匹配不到,则转到DefaultController(全局),若全局控制器也不在,则返回错误结果。
4、路由规则配置值2:匹配{Module}/{Controller}/{Action}/{Para}
说明事项:控制器的名称可以不唯一,存在多个不同的名称空间下:
//匹配路径:/test/hello/...
namespace Taurus.Controllers.Test
{
public class HelloController : Taurus.Core.Controller
{public void World()
{
Write("Test.Hello World");
}
}
}
//匹配路径:/a/hello/...
namespace Taurus.Controllers.A
{
public class HelloController : Taurus.Core.Controller
{
public void World()
{
Write("A.Hello World");
}
}
}
如:
/test/hello/world 则匹配输出:Test.Hello World
/a/hello/world 则匹配输出:A.Hello Wrold
对于不匹配module的,则由控制器上一级名称空间字符串取最值小(Test.HelloController和A.HelloController比较)的做为默认处理程序。
如:
/xxx/hello/world 则匹配输出:A.Hello Wrold
对于需要提供版本路径和版本升级的接口,使用此路由模式比如方便,如:
/v1/hello/world
/v2/hello/world
5、路由映射
路由映射,是在全局DefaultController中处理的,DefaultController有好几个全局事件,此处只讲路由映射相关的:
/// <summary>
/// 全局控制器(适全全局事件处理)
/// </summary>
public class DefaultController : Taurus.Core.Controller
{ /// <summary>
/// 全局【路由映射】
/// 启用时:所有请求都进入此地做映射。
/// </summary>
public static string RouteMapInvoke(HttpRequest request)
{
if (request.Url.LocalPath.StartsWith("/api/") && RouteConfig.RouteMode == 2)
{
return "/test" + request.RawUrl;
}
return string.Empty;
} }
说明,通过request拿到当前请求,根据条件处理,返回需要映射的路径即可,不映射的地址返回空值即可。
总结:
本篇讲述了路由的几种类型和一些细节和全局的映射处理方法,下一篇,讲述控制器更进一步的相关信息。
Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。的更多相关文章
- Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。
前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...
- Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:7、微服务节点的监控与告警。
系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:1、微服务应用程序常规部署实现多开,节点扩容。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
随机推荐
- 用更云原生的方式做诊断|大规模 K8s 集群诊断利器深度解析
背景 通常而言,集群的稳定性决定了一个平台的服务质量以及对外口碑,当一个平台管理了相当规模数量的 Kubernetes 集群之后,在稳定性这件事上也许会"稍显被动". 我们可能经常 ...
- Windows环境下启动Redis报错:Could not create server TCP listening socket 127.0.0.1:6379: bind: 操作成功完成。(已解决)
问题描述: 今天在windows环境下启动Redis时启动失败报错: 解决方案: ①运行命令:redis-cli.exe ②退出Redis ③运行命令:redis-server.exe redis.w ...
- 个人冲刺(六)——体温上报app(一阶段)
任务:完成了自动获取定位信息以及自动获取时间功能 自动获取定位信息 public void onReceiveLocation(BDLocation location){ //此处的BDLocatio ...
- 【Java面试】Spring中 BeanFactory和FactoryBean的区别
一个工作了六年多的粉丝,胸有成竹的去京东面试. 然后被Spring里面的一个问题卡住,唉,我和他说,6年啦,Spring都没搞明白? 那怎么去让面试官给你通过呢? 这个问题是: Spring中Bean ...
- 计算机网络 - OSI 7层网络模型各层对应的功能
应用层 - 负责给应用程序提供统一的接口 表示层 - 负责把数据的解压缩和编码 会话层 - 负责会话的管理(建立和终止) 传输层 - 负责端到端的数据传输 网络层 - 负责数据的路由.转发.分片 数据 ...
- 【clickhouse专栏】单机版的安装与验证
<clickhouse专栏>第三节内容,先安装一个单机版的clickhouse,是后续学习多副本或者分布式集群安装的基础内容.但基本的clickhouse是不依赖于zookeeper的,只 ...
- ESXI系列问题整理以及记录——使用Windows PowerShell中的SSH功能连接ESXI控制台
首先进入ESXI管理页面,开启ESXI的SSH功能 接下来到位于同一局域网的Win主机上开启Powershell,如果ESXI主机的IP地址为192.168.1.77,则在Powershell中输入: ...
- 前端学习 linux —— shell 编程
前端学习 linux - shell 编程 shell 原意是"外壳",与 kernel(内核)相对应,比喻内核外的一层,是用户和内核沟通的桥梁.shell 有很多种,国内通常使用 ...
- 六张图详解LinkedList 源码解析
LinkedList 底层基于链表实现,增删不需要移动数据,所以效率很高.但是查询和修改数据的效率低,不能像数组那样根据下标快速的定位到数据,需要一个一个遍历数据. 基本结构 LinkedList 是 ...
- 如何在vscode 背景配置一个动态小女孩
D:\Microsoft VS Code\resources\app\out\vs\code\electron-browser\workbench <!-- Copyright (C) Micr ...