ASP.NET Core WebAPI 版本控制实现指南

开发 前端
ASP.NET Core WebAPI 提供了灵活且强大的版本控制功能,通过 Microsoft.AspNetCore.Mvc.Versioning 包,开发者可以轻松实现基于查询字符串、URL路径段和HTTP头的版本控制。

在现代软件开发中,API版本控制是一项至关重要的功能,它允许开发者在不破坏现有系统的情况下推出新功能,同时确保向后兼容性。ASP.NET Core WebAPI 提供了多种实现版本控制的方法,本文将详细介绍如何使用 Microsoft.AspNetCore.Mvc.Versioning 包来实现这一功能。

一、前提条件

  1. Visual Studio:确保安装了 Visual Studio 16.4 或更高版本。
  2. .NET Core:确保已安装 .NET Core 3.1 或更高版本。
  3. Postman:用于测试 Web API(如果尚未安装,可以从 Postman 官网下载)。

二、创建 ASP.NET Core Web API 项目

  1. 打开 Visual Studio,单击“文件”->“新建”->“项目”。
  2. 选择“ASP.NET Core Web 应用程序”模板,单击“下一步”。
  3. 给项目命名,并单击“创建”按钮。
  4. 选择“API”模板,单击“创建”按钮。

三、安装 Microsoft.AspNetCore.Mvc.Versioning 包

  1. 右键单击解决方案,选择“管理 NuGet 包”。
  2. 搜索“Microsoft.AspNetCore.Mvc.Versioning”并安装。

四、配置版本控制

  • 打开 Startup.cs 文件,在 ConfigureServices 方法中添加以下代码:
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddApiVersioning(options =>
    {
        // 返回响应标头中支持的版本信息
        options.ReportApiVersions = true;
        
        // 默认情况下,假定未指定版本的请求为1.0版本
        options.AssumeDefaultVersionWhenUnspecified = true;
        
        // 设置默认API版本
        options.DefaultApiVersion = new ApiVersion(1, 0);
        
        // 支持MediaType、Header、QueryString设置版本号,默认使用QueryString
        options.ApiVersionReader = ApiVersionReader.Combine(
            new MediaTypeApiVersionReader("api-version"),
            new HeaderApiVersionReader("api-version"),
            new QueryStringApiVersionReader("api-version"),
            new UrlSegmentApiVersionReader()
        );
    });
}
  • 在 Configure 方法中启用版本控制:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseHttpsRedirection();
    app.UseApiVersioning();
    app.UseRouting();
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

五、实现版本控制

  • 基于查询字符串的版本控制使用 [ApiVersion] 属性标记控制器或方法,并通过查询字符串传递 api-version 参数。
[ApiController]
[Route("[controller]")]
[ApiVersion("1.0", Deprecated = true)]
[ApiVersion("2.0")]
public class WeatherForecastController : ControllerBase
{
    // 控制器方法
}

调用方式:https://localhost:5000/weatherforecast?api-version=1.0 或 https://localhost:5000/weatherforecast?api-version=2.0

  • 基于URL路径段的版本控制在控制器路由中添加版本段,例如 /api/v{version:apiVersion}/[controller]。
[ApiController]
[Route("/api/v{version:apiVersion}/[controller]")]
[ApiVersion("1.0")]
[ApiVersion("2.0")]
public class WeatherForecastController : ControllerBase
{
    // 控制器方法
}

调用方式:https://localhost:5000/api/v1/weatherforecast 或 https://localhost:5000/api/v2/weatherforecast

  • 基于HTTP头的版本控制在请求头中传递 api-version 参数。
options.ApiVersionReader = ApiVersionReader.Combine(
    new MediaTypeApiVersionReader("api-version"),
    new HeaderApiVersionReader("api-version")
);

调用方式:在请求头中添加 api-version: 1.0 或 api-version: 2.0

六、测试版本控制

使用 Postman 或其他 API 测试工具,通过不同的方式(查询字符串、URL路径段、HTTP头)传递 api-version 参数,验证版本控制是否生效。

七、总结

ASP.NET Core WebAPI 提供了灵活且强大的版本控制功能,通过 Microsoft.AspNetCore.Mvc.Versioning 包,开发者可以轻松实现基于查询字符串、URL路径段和HTTP头的版本控制。这些功能不仅有助于及时推出新功能,还能确保现有系统的向后兼容性,为开发者提供了更多的灵活性和控制力。

责任编辑:武晓燕 来源: 程序员编程日记
相关推荐

2021-01-05 07:51:06

版本化ASP

2024-06-11 09:00:00

异步编程代码

2018-08-20 08:03:46

跨平台 Web操作系统

2024-09-09 07:37:51

AspJWT权限

2021-01-15 05:38:28

ASPHttp端口

2021-01-13 07:33:41

API数据安全

2009-08-27 16:59:20

ASP.NET用户控件

2021-03-12 00:04:52

网关Api

2024-09-10 08:13:16

Asp项目轻量级

2021-02-19 06:54:33

配置系统ASP.NET Cor

2024-11-27 08:34:53

ASPZIP压缩包

2024-12-30 00:15:48

ASP.NET安全

2024-12-05 08:14:41

2009-07-27 16:37:42

ASP.NET主机

2009-04-01 12:00:43

ASP.NETMVC

2022-02-15 08:34:56

AI发票识别

2024-05-20 13:06:18

2021-03-04 11:10:29

容器化Docker虚拟机

2021-03-10 09:40:43

LamarASP容器

2021-02-03 13:35:25

ASPweb程序
点赞
收藏

51CTO技术栈公众号