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

Aspnet Core 对 Resetful API版本的支持的更多相关文章

  1. ABP 适用性改造 - 添加 API 版本化支持

    Overview 在前面的文章里有针对 abp 的项目模板进行简化,构建了一个精简的项目模板,在使用过程中,因为我们暴露的 api 需要包含版本信息,我们采取的方式是将 api 的版本号包含在资源的 ...

  2. 尝新体验ASP.NET Core 6预览版本中发布的最小Web API(minimal APIS)新特性

    本文首发于<尝新体验ASP.NET Core 6预览版本中发布的最小Web API(minimal APIS)新特性> 概述 .NET开发者们大家好,我是Rector. 几天前(美国时间2 ...

  3. AspNet Core Api Restful 实现微服务之旅 (一)

    (一)了解微服务(二)搭建VS项目框架  (三)创建AspNet Core Api VS2017 安装包   链接:https://pan.baidu.com/s/1hsjGuJq 密码:ug59 创 ...

  4. AspNet Core Api Restful +Swagger 发布IIS 实现微服务之旅 (二)

    上一步我们创建好CoreApi 接下来在框架中加入 Swagger  并发布  到 IIS (1)首先点击依赖项>管理Nuget包 (2)输入 Swashbuckle.aspnetCore  比 ...

  5. AspNet Core Api Restful +Swagger 实现微服务之旅 (三)

    (1)  访问Rest ful接口时 Token验证  返回数据格式封装 (一)访问时Token验证  返回数据格式封装 1.1访问Api接口 方法 实现         1.1.1 创建访问Rest ...

  6. AspNet Core Api Restful +Swagger 发布IIS

    上一步我们创建好CoreApi 接下来在框架中加入 Swagger  并发布  到 IIS (1)首先点击依赖项>管理Nuget包 (2)输入 Swashbuckle.aspnetCore  比 ...

  7. 温故知新,使用ASP.NET Core创建Web API,永远第一次

    ASP.NET Core简介 ASP.NET Core是一个跨平台的高性能开源框架,用于生成启用云且连接Internet的新式应用. 使用ASP.NET Core,您可以: 生成Web应用和服务.物联 ...

  8. AspNet Core 初步认识

    Core 的出现对我我没有很大的影响,当时在Core要发布的时候听到周围的人再聊再谈,我没有去太多关注,就是一个屌丝开发人员. 直到又一次偶然见到一位特别喜欢.net的老开发人员谈起Core时落泪了, ...

  9. ASP.NET Core 2.1对GDPR的支持

    欧盟的<通用数据保护条例>(General Data Protection Regulation,以下简称 GDPR)已经于 2018 年 5 月 25 日正式施行.GDPR 涵盖了包括数 ...

随机推荐

  1. mac查看git路径

    mac查看git路径

  2. linux 下查看java进程

    linux下查看出问题的java进程,便于发现程序问题.命令如下: 找到存在问题的java进程号,ps -ef|grep java ,如进程30021 卡住,需要查看该进程信息,那么敲入命令: jst ...

  3. markdown 转义字符

    \\ 反斜杠 \` 反引号 \* 星号 \_ 下划线 \{\} 大括号 \[\] 中括号 \(\) 小括号 \# 井号 \+ 加号 \- 减号 \. 英文句号 \! 感叹号

  4. com.fasterxml.jackson工具类

    老版本的Jackson使用的包名为org.codehaus.jackson,而新版本使用的是com.fasterxml.jackson. Jackson主要包含了3个模块: jackson-core ...

  5. spring的事件驱动模型

    在工作中会遇到这样的业务,生成一个订单后需要给指定的用户发送短信或者邮件,但是短信或者邮件发送失败又不会影响正常的业务: 这里介绍通过ApplicationContext和spring的@EventL ...

  6. Qt快速入门第三版下载

    找了半天才找到一个靠谱的: http://www.ddooo.com/softdown/111665.htm

  7. window C/C++ 简单的IDE编译器

    C-Free 官网链接: http://www.programarts.com/cfree_ch/download.htm

  8. Could not find a package configuration file provided by "Qt5Widgets"

    解决: sudo apt install qttools5-dev

  9. 使用Mermaid画图

    流程图的示例 时序图的示例 甘特图的示例 FAQ 很多时候,你想解释自己的想法/代码,但是用语言来表达会很啰嗦,并且读者也不易理解.一般这种情况下,我们都会想使用图解来解释.但是,我们也不会想下载那些 ...

  10. Qt无法正确 sendMessage 的消息

    项目背景: 项目需要将vc中的代码移植到Qt中,而且由于使用的SDK是32位,所以,Qt使用的版本是MinGW32,另外下载的也是官网最新的版本Qt5.11.1. 系统环境:Windows10 在将w ...