zoukankan      html  css  js  c++  java
  • .netcore2.1 接口添加api-version版本控制

    • 使用Guget 添加Microsoft.AspNetCore.Mvc.Versioning 包引用,由于我的.netcore是2.1版本,避免出现不兼容问题,版本添加我选的也是2.1版本

    • 在Startup.cs中的  public void ConfigureServices(IServiceCollection services)添加如下代码
     services.AddApiVersioning(o =>
                {
                    o.ReportApiVersions = true;
                    o.AssumeDefaultVersionWhenUnspecified = true;
                    o.DefaultApiVersion = new ApiVersion(2, 0); //设置默认版本
                    //在请求头(HTTP Header)中使用版本控制,在查询字符串中指定版本号的方式将不再可用
                    // o.ApiVersionReader = new HeaderApiVersionReader("x-api-version");
                    o.ApiVersionReader = ApiVersionReader.Combine(new QueryStringApiVersionReader(), //同时支持(HTTP Header)中使用版本控制,和查询字符串中指定版本号
                    new HeaderApiVersionReader() { HeaderNames = { "x-api-version" } });
                });
    • 创建ValueV1和ValueV2两个测试控制器
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Http;
    using Microsoft.AspNetCore.Mvc;
    
    namespace WebApiVersion.Controllers
    {
        [ApiVersion("1.0",Deprecated =true)]
        [Route("api/values")]
        [ApiController]
        public class ValuesV1Controller : ControllerBase
        {
            [HttpGet]
            public IEnumerable<string> Get()
            {
                return new string[] { "Value1 from Version 1", "value2 from Version 1" };
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Http;
    using Microsoft.AspNetCore.Mvc;
    
    namespace WebApiVersion.Controllers
    {
        [ApiVersion("2.0")]
        [Route("api/values")]
        [ApiController]
        public class ValuesV2Controller : ControllerBase
        {
            [HttpGet]
            public IEnumerable<string> Get()
            {
                return new string[] { "value1 from Version 2", "value2 from Version 2" };
            }
        }
    }
    • 接口默认返回设置的为2.0,现在请求1.0接口,使用Header方式

    • 使用查询字符串方式请求

    • 使用ApiVersionNeutral指定不需要版本控制的Api
        [ApiVersionNeutral]
        [Route("api/[controller]")]
        [ApiController]
        public class HealthCheckController : ControllerBase
        {
            public string Get()
            {
                return "Good";
            }
        }
  • 相关阅读:
    本地代码库关联Github
    常用正则表达式
    IDEA开启并配置services窗口
    数据结构总结
    IDEA导入项目后文件出现时钟的原因及解决方案
    win7硬盘安装过程图解(需要编辑)
    How to Create a Automated Task that Runs at a Set Time in Windows 7
    【转】Code Review(代码复查)
    (收藏)C#开源资源大汇总
    Windows Workflow Foundation:向跟踪服务(TrackingService)传递数据
  • 原文地址:https://www.cnblogs.com/personblog/p/12503116.html
Copyright © 2011-2022 走看看