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";
            }
        }
  • 相关阅读:
    一道C#基础题,看你能多长时间做出来?
    终于能在这里安家了
    你知道返回多少吗?(使用Math类)
    关于implicit和explicit关键词的用法
    关于基类与派生类的学习
    js控制输入框
    Oracle 动态SQL返回单条结果和结果集 转帖
    定时器:.NET Framework类库中的Timer类比较(转帖)
    UVA10020 Minimal coverage
    UVA1388 Graveyard
  • 原文地址:https://www.cnblogs.com/personblog/p/12503116.html
Copyright © 2011-2022 走看看