当前位置: 移动技术网 > IT编程>开发语言>.net > .netcore2.1 接口添加api-version版本控制

.netcore2.1 接口添加api-version版本控制

2020年03月16日  | 移动技术网IT编程  | 我要评论

vr1.5中文版下载,猪仔价格,修真者

  • 使用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";
        }
    }

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网