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();
  • 相关阅读:
    [原创]WKWebview点击图片查看大图
    解决项目中.a文件的冲突
    友盟添加页面统计
    使用cocoaPods和遇到的问题以及解决办法
    #leetcode刷题之路50-Pow(x, n)
    #leetcode刷题之路49-字母异位词分组
    #leetcode刷题之路48-旋转图像
    #leetcode刷题之路47-全排列 II
    #leetcode刷题之路46-全排列
    #leetcode刷题之路45-跳跃游戏 II
  • 原文地址:https://www.cnblogs.com/linkanyway/p/aspnet-core-api-version.html
Copyright © 2011-2022 走看看