ASP.Net Core中关于WebApi几种版本控制对比详解(图)


当前第2页 返回上一页

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

public class NameSpaceVersionRoutingConvention:IApplicationModelConvention

  {

    private readonly string apiPrefix;

    private const string urlTemplate = "{0}/{1}/{2}";

    public NameSpaceVersionRoutingConvention(string apiPrefix = "api")

    {

      this.apiPrefix = apiPrefix;

    }

 

    public void Apply(ApplicationModel application)

    {

      foreach (var controller in application.Controllers)

      {

         

        var hasRouteAttribute = controller.Selectors

        .Any(x => x.AttributeRouteModel != null);

        if (!hasRouteAttribute)

        {

          continue;

        }

        var nameSpaces = controller.ControllerType.Namespace.Split('.');

        //获取namespace中版本号部分

        var version = nameSpaces.FirstOrDefault(x => Regex.IsMatch(x, @"^v(\d+)$"));

        if (string.IsNullOrEmpty(version))

        {

          continue;

        }

        string template = string.Format(urlTemplate, apiPrefix, version,

        controller.ControllerName);

        controller.Selectors[0].AttributeRouteModel = new AttributeRouteModel()

        {

          Template = template

        };

      }

    }

  }

调试代码发现这种方式只在程序第一次运行的时候会执行,之后不会再执行多次,因此效率很高。

五、总结:

以上就是ASP.Net Core中关于WebApi几种版本控制对比详解(图)的详细内容!

返回前面的内容

相关阅读 >>

asp.net完成文件上传的代码教程

mvc中获得controller、url及action的asp.net方法详解

asp.net中的web.config配置文件介绍

用signair和push.js完成消息推送代码详解

asp.net实现文件下载功能

.net core 和 .net .framework 相比哪个速度快?

总结asp.net内置对象(response)使用方法实例

.net core 2.0 preview2的详细介绍

一段asp.net des加密解密的代码

学习asp.net的学习顺序与学习内容分享

更多相关阅读请进入《asp.net》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...