zoukankan      html  css  js  c++  java
  • Aspnet Core 对 Resetful API版本的支持

    在实际项目过程中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();
  • 相关阅读:
    Vue项目style样式层下载less-loader时候遇到的坑
    用git上传项目到github遇到的问题和解决方法
    git命令大全
    npm run dev 报错:missing script:dev
    sessionStorage缓存数据
    RTL基本知识:编译命令指定隐性线网类型
    RTL基本知识:线网的隐性声明
    物理综合:关于UDSM后端设计总结
    RTL基本知识:task和function
    物理综合:Timing_budgeting
  • 原文地址:https://www.cnblogs.com/linkanyway/p/aspnet-core-api-version.html
Copyright © 2011-2022 走看看