在实际项目过程中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();

最新文章

  1. MVC下压缩输入的HTML内容
  2. iOS8沙盒路径的变化
  3. UVA - 11584 Partitioning by Palindromes[序列DP]
  4. 入手了[云梯的VPN]--水文
  5. Angular Module声明和获取重载
  6. .Net Core 之 图形验证码
  7. 数字信号处理实验(四)——数字滤波器结构
  8. Java基础 静态块、非静态块、构造函数的执行顺序
  9. Markdown中插入数学公式
  10. No mapping found for HTTP request with URI [] in DispatcherServlet with name 'appServlet'
  11. [css]【转载】CSS样式分离之再分离
  12. 【转】java多态详解
  13. OWIN katana注册中间件的几种写法
  14. OpenJudge/Poj 1936 All in All
  15. SQL Server索引语法 <第四篇>
  16. 打工心态废掉了很多人,包括你吗?(你把现在这家公司的业务都弄清楚、弄懂了吗?君子报仇十年不晚!不离不弃!)good
  17. LeetCode题解之Binary Tree Right Side View
  18. Linux之grep的使用
  19. i.MX6UL -- PWM用户空间使用方法【转】
  20. pyHook监听用户鼠标、键盘事件

热门文章

  1. 第一个thinkphp项目遇到的知识
  2. keras使用
  3. 分布式协调服务Zookeeper扫盲篇
  4. 关于 Microsoft Dynamics CRM has encountered an error 弹窗的问题
  5. 腾讯地图 API 调用入门
  6. linux 每个小时释放一次cache
  7. 【ShaderToy】画一个球体
  8. 20155324《网络对抗》Exp1 PC平台逆向破解(5)M
  9. 电脑右键新建excel工作表,但是扩展名是.xls,而不是.xlsx
  10. python装饰器的wraps作用