在实际项目过程中API往往会收到迭代的影响,同时具备多个版本,因此resetful接口的版本话是非常重要的。

其实官方就提供了很好的支持,微软爸爸在nuget提供了Microsoft.AspNetCore.Mvc.Versioning 2.3.0

该包还具有很多其他的功能,具体细节请移步官方的github

废话不多,直接上步骤

  1. Nuget安装 Microsoft.AspNetCore.Mvc.Versioning.
  2. startup.cs中做如下配置
    public void ConfigureServices(IServiceCollection services){services.AddMvc();services.AddApiVersioning(o => o.ApiVersionReader = new HeaderApiVersionReader("api-version"));}
    

      

  3. 加入Controller内的配置

    using Microsoft.AspNetCore.Mvc.Versioning;
    namespace Product.CommandService.Controllers.Product.V1
    {[ApiVersion("1.0")][Produces("application/json")][Route("api/Product")]public class ProductController : Controller{}
    }namespace Product.CommandService.Controllers.Product.V2
    {[ApiVersion("2.0")][Produces("application/json")][Route("api/Product")]public class ProductController : Controller{}
    }
    

      

  4. 如果你不希望有些接口使用API Version

    [ApiVersionNeutral]
    [Route("api/optout")]
    public class OptOutControler : Controller
    {[HttpGet]public string Get() => HttpContext.GetRequestedApiVersion().ToString();
    }
    

      


  5. 之后客户端访问的时候都需要在头部加入api-version,如nodejs实例代码
    var http = require("http");var options = {"method": "GET","hostname": ["localhost"],"port": "5000","path": ["ioc","showmodule"],"headers": {"api-version": "1.0","Cache-Control": "no-cache","Postman-Token": "2286a575-559d-4789-8056-eb26223f6fa4"}
    };var req = http.request(options, function (res) {var chunks = [];res.on("data", function (chunk) {chunks.push(chunk);});res.on("end", function () {var body = Buffer.concat(chunks);console.log(body.toString());});
    });req.end();

转载于:https://www.cnblogs.com/linkanyway/p/aspnet-core-api-version.html

Aspnet Core 对 Resetful API版本的支持相关推荐

  1. android api版本 闪退_经验分享:从事 Android 开发六年,我学到的那些事

    你的代码质量应该随着经验的增加而提高,在本文作者基于 Android 开发者六年间,其都学到了什么? 以下为译文: 六年来,我为多家公司编写过各种应用程序.你编写代码或处理代码库的文化和方式会随着你的 ...

  2. 微软发布PowerShell Core第一个版本:支持多平台开发

    微软旗下的PowerShell团队正式宣布推出PowerShell Core 6.0,非常诡异的是这明明是Core的第一个版本,但是却用了一个6.0后缀的版本号. "这是我们对PowerSh ...

  3. ASPNET Core api 中获取应用程序物理路径wwwroot

    如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: // Classi ...

  4. ASP.NET Core 6 Minimal API

    ASP.NET Core 6 Minimal API Intro 微软在 ASP.NET 6 Preview 4 的介绍文章中介绍了即将到来的 ASP.NET Core 6 中的最小 API 的雏形, ...

  5. ASP.NET Core 3.x API版本控制

    前言 一般来说需要更改我们API的时候才考虑版本控制,但是我觉得我们不应该等到那时候来实现它,我们应该有一个版本策略从我们应用程序开发时就开始制定好我们的策略,我们一直遵循着这个策略进行开发. 我们其 ...

  6. 临近年关,修复ASP.NET Core因浏览器内核版本引发的单点登录故障

    临近年关,咨询师提出360.搜狗急速浏览器无法单点登录到公司核心产品WD: 重定向过多. 现象 经过测试, 出现单点登陆故障的是搜狗.360等双核浏览器(默认使用Chrome内核), 较新式的Edge ...

  7. .Net Core中的Api版本控制

    原文链接:API Versioning in .Net Core 作者:Neel Bhatt 简介 Api的版本控制是Api开发中经常遇到的问题, 在大部分中大型项目都需要使用到Api的版本控制 在本 ...

  8. CAP 2.3版本发布,支持 MongoDB

    前言 经过2个月的调整及测试,CAP 2.3 版本终于发布了,这个版本最大的特性就是对于 MongoDB 的支持,感谢博客园团队的keke同学对于 MongoDB 支持所提供的 PR,相信随着博客园的 ...

  9. ASPNET Core 2.x中的Kestrel服务器

    Kestrel是一个基于libuv的跨平台ASP.NET Core web服务器,libuv是一个跨平台的异步I/O库.ASP.NET Core模板项目使用Kestrel作为默认的web服务器. Ke ...

最新文章

  1. 过渡元素最外层电子数_元素周期表
  2. linux路由命令大全,常用Linux路由命令
  3. C++线性序列容器vector简单总结
  4. JPA注解(这里包含sequence类型的)
  5. java求二维数组每行的最大值_用JAVA输入一个二维数组a[3][4]的元素值,求输出其元素最大值...
  6. 面试题 01.06. 字符串压缩
  7. react 数据库排序_如何使用React对表数据进行排序
  8. ES5(一)——保护对象
  9. Ext JS isField为空或不是对象问题的解决
  10. python比较四个数字大小写_Python大牛私藏的20个精致代码,短小精悍,用处无穷...
  11. 微信红包工具服务器,微信红包 是怎么扛住全球用户的!
  12. PowerBuilder fileOpen()
  13. 在做UDP传输的时候,出现的这个问题,哪个大佬能帮忙看一看啊
  14. 小程序项目:基于微信小程序的超市购物系统——计算机毕业设计
  15. Anroid Studio开发---日记本App
  16. 深信服 一面 2018 秋招
  17. markman,让设计更有爱!
  18. linux获得命令使用帮助
  19. 人工智能在各个领域里的应用场景
  20. 微型计算机ccc认证依据,3C检测规定

热门文章

  1. 客户端跳转代码html5,HTML5跳转小程序wx-open-launch-weapp的示例代码
  2. 仿京东左侧菜单弹出html代码,相仿京东左侧菜单
  3. markdown 表格对齐方式、换行、内嵌列表、...
  4. 【css】文字溢出,显示省略符号(...)
  5. nutch开发(六)
  6. 计算机网络优化是啥,浅析计算机网络优化的方案.doc
  7. Java注解配置rest服务_Spring Boot 注解—常用注解
  8. python四大高阶函数求导_4个python常用高阶函数的使用方法
  9. php 组合模式,php设计模式(十三)透明组合模式
  10. Oracle使用imp/exp导入/导出数据库