全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

ASP.NET Core怎么实现API版本控制 ASP.NET Core API Versioning教程

推荐使用 Microsoft.AspNetCore.Mvc.Versioning 包实现 ASP.NET Core API 版本控制,支持 URL、查询参数、请求头等多种版本标识方式,需在 Program.cs 中注册服务并配置默认版本、弃用提示等,控制器通过 [ApiVersion] 特性声明版本支持。

ASP.NET Core 实现 API 版本控制,推荐使用官方支持的 Microsoft.AspNetCore.Mvc.Versioning 包,它轻量、灵活,与 MVC 深度集成,支持 URL、查询参数、请求头等多种版本标识方式。

安装并启用版本控制服务

Program.cs 中注册服务并配置基础行为:

  • 通过 AddApiVersioning 启用版本控制,设置默认版本(如 1.0)和是否报告支持的版本
  • 可选启用 AssumeDefaultVersionWhenUnspecified = true,让无版本请求默认走 v1
  • 若需返回 api-supported-versionsapi-deprecated-versions 响应头,开启 ReportApiVersions = true
示例:
builder.Services.AddApiVersioning(options =>
{
    options.DefaultApiVersion = new ApiVersion(1, 0);
    options.AssumeDefaultVersionWhenUnspecified = true;
    options.ReportApiVersions = true;
});

在控制器中声明版本支持

使用 [ApiVersion] 特性标注控制器或具体 Action,支持多个版本同时存在:

  • 单个控制器支持多版本:加多个 [ApiVersion("1.0")][ApiVersion("2.0")]
  • 不同控制器处理不同版本:如 ProductsControllerV1ProductsControllerV2,都路由到 /api/products
  • 配合 [MapToApiVersion("2.0")] 可将某个 Action 限定只响应 v2 请求
注意:必须为每个版本提供至少一个匹配的 endpoint,否则会返回 400 或 404。

选择版本识别方式(URL / Query / Header)

默认通过请求头 api-version 识别,但更常见的是 URL 路径(如 /api/v1/products)或查询参数(如 /api/products?api-version=1.0):

  • URL 路径:配置 options.ApiVersionReader = new UrlSegmentApiVersionReader();,再用 [Route("api/v{version:apiVersion}/[controller]")]
  • 查询参数:用 new QueryStringApiVersionReader("api-version")
  • 请求头:默认即支持,客户端传 api-version: 2.0
  • 也可组合使用,如优先读 URL,降级读 Header

处理弃用与兼容性提示

对已废弃的版本,可通过特性明确标记,并由框架自动注入响应头:

  • 给控制器加 [ApiVersion("1.0", Deprecated = true)]
  • 启用 ReportApiVersions = true 后,v1 接口响应头会包含 api-deprecated-versions: 1.0
  • 客户端可根据该头决定是否提醒用户升级,服务端无需手动拦截或返回特殊状态码

基本上就这些。不复杂但容易忽略细节,比如忘了注册服务、没配路由模板、或多个版本控制器冲突——调试时留意日志里 ApiVersionMatcherPolicy 的匹配结果即可。


# 路由  # microsoft  # 状态码  # .net  # mvc  # 接口  # 多个  # 推荐使用  # 的是  # 客户端  # 也可  # 可选  # 再用  # 可将  # 可通过  # 并由 


相关文章: 定制建站是什么?如何实现个性化需求?  如何用5美元大硬盘VPS安全高效搭建个人网站?  如何在IIS7上新建站点并设置安全权限?  网站设计制作企业有哪些,抖音官网主页怎么设置?  专业公司网站制作公司,用什么语言做企业网站比较好?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  如何配置IIS站点权限与局域网访问?  如何在橙子建站上传落地页?操作指南详解  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  如何在腾讯云服务器上快速搭建个人网站?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  建站主机选购指南与交易推荐:核心配置解析  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何选择PHP开源工具快速搭建网站?  活动邀请函制作网站有哪些,活动邀请函文案?  济南企业网站制作公司,济南社保单位网上缴费步骤?  如何高效配置IIS服务器搭建网站?  如何在宝塔面板创建新站点?  建站之星安装后如何自定义网站颜色与字体?  如何高效搭建专业期货交易平台网站?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  制作网站外包平台,自动化接单网站有哪些?  如何通过FTP空间快速搭建安全高效网站?  Python文件管理规范_工程实践说明【指导】  制作网站怎么制作,*游戏网站怎么搭建?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  建站之星如何配置系统实现高效建站?  C++时间戳转换成日期时间的步骤和示例代码  如何选择高效响应式自助建站源码系统?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  魔毅自助建站系统:模板定制与SEO优化一键生成指南  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  宝塔面板创建网站无法访问?如何快速排查修复?  模具网站制作流程,如何找模具客户?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  重庆市网站制作公司,重庆招聘网站哪个好?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  如何在阿里云ECS服务器部署织梦CMS网站?  金*站制作公司有哪些,金华教育集团官网?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  如何在局域网内绑定自建网站域名?  宁波免费建站如何选择可靠模板与平台?  如何快速完成中国万网建站详细流程?  微课制作网站有哪些,微课网怎么进?  Python lxml的etree和ElementTree有什么区别  IOS倒计时设置UIButton标题title的抖动问题  如何在橙子建站中快速调整背景颜色?  香港服务器WordPress建站指南:SEO优化与高效部署策略 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。