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";
            }
        }
  • 相关阅读:
    VueBlog
    java 代理模式
    集合框架
    面试题
    java 多线程
    网络编程
    HTTP
    MAVEN
    Redis高级
    深入浅出--梯度下降法及其实现
  • 原文地址:https://www.cnblogs.com/personblog/p/12503116.html
Copyright © 2011-2022 走看看