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 架构在大并发的演进过程更简单 ...
随机推荐
- 渗透:EWSA
EWSA全称Elcomsoft Wireless Security Auditor.ElcomSoft是一家俄罗斯软件公司,出品过不少密码破解软件,涉及Office.SQL.PDF.EFS等等. EW ...
- 分布式下Session一致性问题
一.Session一致性问题 1.1 什么是Session 用户使用网站的服务,基本上需要浏览器和web服务器进行多次交互,web服务器如何知道哪些请求是来自哪个会话的? 具体方式为:在会话开始时,分 ...
- 143. Reorder List - LeetCode
Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前 ...
- 解决windows server 2008r2服务器自动关机
问题 具体表现就是系统自动关机,网上说是开机后2小时就会自动关机 系统版本: 解决 PsTools下载 解压:PSTools.zipg,如解压到C:\PSTools目录下 执行如下命令,打开注册表 W ...
- Mybatis-Plus乐观锁Version
实现原理 取出记录时,获取当前version更新时,带上这个version执行更新时, set version = newVersion where version = oldVersion如果ver ...
- 第06组 Beta冲刺 (2/5)
目录 1.1 基本情况 1.2 冲刺概况汇报 1.郝雷明 2. 方梓涵 3.杜筱 4.黄少丹 5. 董翔云 6.鲍凌函 7.詹鑫冰 8.曹兰英 9.曾丽莉 10.吴沅静 1.3 冲刺成果展示 1.1 ...
- React简单教程-3.1-样式之使用 tailwindcss
前言 本文是作为一个额外内容,主要介绍 tailwindcss 的用法 tailwindcss 是一个功能类优先的 CSS 框架,我在以前的文章里有描述为什么使用功能类优先:为什么我在 css 里使用 ...
- Java - ConcurrentHashMap的原理
Java - ConcurrentHashMap的原理 **这是JDK1.7的实现** ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment. HashE ...
- 接口测试postman深度挖掘应用①
一.测试接口前需要搞明白的原理: 1.在讲如何使用postman时,我们首先应该要了解网络的请求相应的知识,下面以fiddle进行抓包为例分析: 通过fiddler抓包我们不难发现,客户端也就是用户会 ...
- linux目录结构及定时任务
1. Linux的根目录(最顶层的目录) windows系统有根目录:c盘的根目录就是c:\ d盘的根目录就是d:\ 每个盘(分区)都有自己的根目录 Linux系统, 也支持多个分区 Linux的分区 ...