• NetCoreAPI版本控制


    NetCoreAPI版本控制

    随着我们的APP运行的时间越来越久,功能也越来越复杂,我们经常会修改一些接口的入参以及输出参数,不同的APP版本会导致我们需要不同的API版本。在这篇文章中,我会分享一些我在开发API中解决版本控制的方法。

    本片文章中项目的开发环境:

    • Visual Studio 2017

    • .Net Core 2.0 SDK

      使用Nuget安装Api版本控制库
      PM> Install-Package Microsoft.AspNetCore.Mvc.Versioning
      
    修改Startup类

    在Startup类的ConfigureService方法中添加以下代码。

    services.AddApiVersioning(c => {
                    c.AssumeDefaultVersionWhenUnspecified = true;
      				//该属性设置为true就在请求链接中未设置版本时使用初始版本
                    c.DefaultApiVersion = new Microsoft.AspNetCore.Mvc.ApiVersion(1,0);
      				//设置初始版本,ApiVersion的方法有多个重载,有兴趣可以多研究一下。
                });
    

    ReportApiVersions 属性如果设置为true, 在Api请求的响应头部,会在返回的头中显示所有拥有的版本号,如下图

    测试版本控制
    namespace Test.API.Controllers
    {
      	//这里应该是Versioning插件将内联路由约束给重写了,不然我们无法使用apiVersion来作为约束的。想深入的话最好了解一下Netcore的路由约束。
      	//里面不要有空格。
        [Route("api/v{v:apiVersion}/[controller]")]
      	//之所以把路由写在这里是因为我们大部分API都需要版本控制,所以为了不用在每个类上写,我们就让所有的控制器都集成这个控制器,这样就会减去一些不必要的编码了。
        public class BaseController : Controller
        {
        }
    }
    
    
    namespace InsuranceMarketing.API.Controllers
    {  	
      	//如果项目已经做了一部分了。初始版本可以不写上的。当然第二及以后版本需要加上。
        [ApiVersion("1.0"), ControllerName("TestVersion")]
        public class TestV1Controller : BaseController
        {
            [HttpGet, Route("Version")]
            public string GetTest()
            {
                return "我是V1版本"; 
            }
        }
    }
    
    namespace InsuranceMarketing.API.Controllers
    {
      	//这里是版本控制,以及控制器的别名,为了让不同控制器的方法以版本的形式让路由找到。
        [ApiVersion("2.0"), ControllerName("TestVersion")]
        public class TestV2Controller : BaseController
        {
          	//路由名称需写为同名
            [HttpGet, Route("Version")]
            public string GetTestV2()
            {
                return "我是V2版本";
            }
        }
    }
    

    现在我们来调用一下。

    http://localhost:56650/api/v1.0/TestVersion/Version
    

    http://localhost:56650/api/v2.0/TestVersion/Version
    

    当然,版本控制还有其他方法像在url后面添加版本参数,或者在请求头中添加版本参数。这里就不细说了。
    这是github:https://github.com/Microsoft/aspnet-api-versioning/wiki

  • 相关阅读:
    C#后台正则表达式
    Layer 弹出层抖动问题
    JS中子页面父页面方法 变量相互调用
    layer最大话.最小化.还原回调方法
    trove远程连接mongodb
    tar.gz tar.bz2的解压命令
    IO测试工具之fio详解
    HTTP请求方法
    jmeter --使用put方法上传文件
    DHCP的原理和实现过程
  • 原文地址:https://www.cnblogs.com/qingyanxiaochen/p/9967473.html
Copyright © 2020-2023  润新知