You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer设置.NET Core REST API版本为major.minor.patch格式

实现ASP.NET Core API的major.minor.patch版本格式

当然可以实现这个需求!我之前在项目里也调整过版本号的格式,下面是具体的操作步骤,帮你替换默认的版本格式为major.minor.patch:

1. 配置ApiVersioning服务

首先在Program.cs(.NET 6+)或者Startup.cs(.NET 5及更早)中配置API版本控制,重点是设置版本的格式规则:

builder.Services.AddApiVersioning(options =>
{
    // 指定从URL路径中读取版本号
    options.ApiVersionReader = new UrlSegmentApiVersionReader();
    // 设置默认版本(如果请求没指定版本时使用)
    options.DefaultApiVersion = new ApiVersion(1, 1, 1);
    options.AssumeDefaultVersionWhenUnspecified = true;
    // 允许客户端请求特定版本,同时支持默认版本回退
})
.AddApiExplorer(options =>
{
    // 核心配置:定义版本组的格式为v{major}.{minor}.{patch}
    // "VVV"格式符会完整输出major.minor.patch(如果patch存在的话)
    options.GroupNameFormat = "'v'VVV";
    // 允许在生成的URL中自动替换版本号(适配Swagger文档等场景)
    options.SubstituteApiVersionInUrl = true;
});

这里的GroupNameFormat = "'v'VVV"是关键:VVV是ApiVersion提供的格式符,会将版本对象完整格式化为major.minor.patch(当你定义包含patch的ApiVersion时),加上单引号包裹的v,就会生成v1.1.1这样的格式。

2. 给控制器标注版本并配置路由

接下来在你的控制器上指定版本号,同时配置对应的路由模板:

[ApiVersion("1.1.1")]
// 路由中的{version:apiVersion}会匹配我们定义的版本格式
[Route("api/v{version:apiVersion}/foo")]
[ApiController]
public class FooController : ControllerBase
{
    [HttpGet]
    public IActionResult GetFoo()
    {
        return Ok($"Response from API version: {HttpContext.GetRequestedApiVersion()}");
    }
}

如果需要支持多个版本,比如同时存在v1.1.0和v1.1.1,只需要创建对应的控制器或者在同一个控制器上添加多个[ApiVersion]标注即可:

[ApiVersion("1.1.0")]
[ApiVersion("1.1.1")]
[Route("api/v{version:apiVersion}/foo")]
[ApiController]
public class FooController : ControllerBase
{
    [HttpGet, MapToApiVersion("1.1.0")]
    public IActionResult GetFooV1_1_0()
    {
        return Ok("Response from v1.1.0");
    }

    [HttpGet, MapToApiVersion("1.1.1")]
    public IActionResult GetFooV1_1_1()
    {
        return Ok("Response from v1.1.1");
    }
}

3. 验证效果

启动项目后,访问/api/v1.1.1/foo就能正确路由到对应的版本方法,完全符合你期望的URL格式。

如果需要集成Swagger文档,这个配置也能让Swagger自动生成对应版本的文档分组,格式也是v1.1.1,非常方便。

内容的提问来源于stack exchange,提问作者iticek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:41:24