系列目录

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:路由类型和路由映射。的更多相关文章

  1. Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。

    前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...

  2. Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  3. Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  4. Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  5. Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  6. Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  7. Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  8. Taurus.MVC 微服务框架 入门开发教程:项目部署:7、微服务节点的监控与告警。

    系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  9. Taurus.MVC 微服务框架 入门开发教程:项目部署:1、微服务应用程序常规部署实现多开,节点扩容。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

随机推荐

  1. Blazor和Vue对比学习(进阶2.1.1):生命周期,基本理解和使用

    一.基本理解 首次接触"生命周期"这个名词,是比较晦涩的,Vue中又有生命周期钩子,而Blazor则是虚方法重写,容易蒙.所以,我尝试从初学者的角度来阐述一下. 1.我们在基础部分 ...

  2. 设计并实现大数类 BigNum

    学习任务:设计并实现大数类 BigNum 代码示例: import java.util.Scanner; public class BigNum { private double num; publi ...

  3. .NET Core 读取配置技巧 - IOptions<TOptions> 接口

    原文链接:https://www.cnblogs.com/ysmc/p/16307804.html 在开发过程中,我们无法离开配置文件(appsetting.json),例如配置文件中有以下内容: { ...

  4. Win10系统下怎么让局域网内其他电脑通过IP访问网站

    最近,有位win10系统用户在电脑上制作好网站后,希望能让局域网内的其他电脑通过IP直接访问自己电脑的网站,以便得到更好地测试效果.可是,该用户操作了很久都没成功.那么,我们如何配置win10电脑的I ...

  5. Flink整合面向用户的数据流SDKs/API(Flink关于弃用Dataset API的论述)

    动机 Flink提供了三种主要的sdk/API来编写程序:Table API/SQL.DataStream API和DataSet API.我们认为这个API太多了,建议弃用DataSet API,而 ...

  6. Linux免密登陆配置(互信配置)

    Linux免密登陆配置(互信配置) 1.生成当前用户的秘钥文件 [oracle@localhost .ssh]$ ssh-keygen -t rsa 2.配置远程登录用户的公钥文件 将公钥文件拷贝至另 ...

  7. Camunda如何配置和使用mysql数据库

    Camunda默认使用已预先配置好的H2数据库,数据库模式和所有必需的表将在引擎第一次启动时自动创建.如果你想使用自定义独立数据库,比如mysql,请遵循以下步骤: 一.新建mysql数据库 为Cam ...

  8. 物联网微消息队列MQTT介绍-EMQX集群搭建以及与SpringBoot整合

    项目全部代码地址:https://github.com/Tom-shushu/work-study.git (mqtt-emqt 项目) 先看我们最后实现的一个效果 1.手机端向主题 topic111 ...

  9. C语言学习之我见-strcpy()字符串复制函数

    strcpy()函数,用于两个字符串值的复制. (1)函数原型 char * strcpy(char * _Dest,const char * _Source); (2)头文件 string.h (3 ...

  10. React技巧之字符串插值

    原文链接:https://bobbyhadz.com/blog/react-string-interpolation 作者:Borislav Hadzhiev 正文从这开始~ 总览 在React中,使 ...