.NET最小 API 如何进行版本控制?安排!

.NET最小 API 如何进行版本控制?安排!

API 版本控制允许开发人员在不破坏现有客户端的情况下对 API 进行更改或增强。API 版本控制的好处是,它可以提高 API 的可维护性、灵活性和安全性。

API 版本控制的常用方法有以下几种:.

  • 使用 URL 路径来区分不同版本的 API,例如 /api/v1/demo 和 /api/v2/demo。
  • 使用查询字符串参数来指定 API 的版本,例如 /api/demo?version=1 和 /api/demo?version=2。
  • 使用 HTTP 头部来传递 API 的版本信息,例如 api-version: 1

在本文中,我们将介绍如何使用最小 API 来实现这三种版本控制方法。

使用 URL 路径来区分不同版本的 API

在 ASP.NET Core 中,我们可以使用 MapGet() 方法来定义一个 GET 请求的路由,例如:

app.MapGet("/api/demo", () => "Hello MyIO");

在上面的代码中,我们定义了一个 GET 请求的路由,该路由为 /api/demo。

要为该路由添加版本支持,我们首先需要引用 Nuget 包 Asp.Versioning.Http,并在 Program.cs 文件中添加以下代码,以启用 API 版本控制:

builder.Services.AddApiVersioning(options =>
{
    options.ApiVersionReader = new UrlSegmentApiVersionReader();
});

然后,我们需要创建一个版本集,告诉 API 版本控制系统哪些版本可供使用:

var versionSet = app.NewApiVersionSet()
                    .HasApiVersion(1.0)
                    .HasApiVersion(2.0)
                    .ReportApiVersions()
                    .Build();

最后,我们需要修改路由,以便为每个版本定义一个路由,例如:

app.MapGet("/api/v{version:apiVersion}/demo", () => "Hello MyIO 1.0").WithApiVersionSet(versionSet).HasApiVersion(new ApiVersion(1, 0));
app.MapGet("/api/v{version:apiVersion}/demo", () => "Hello MyIO 2.0").WithApiVersionSet(versionSet).HasApiVersion(new ApiVersion(2, 0));

在上面的代码中, {version:apiVersion} 是一个占位符,它表示 API 的版本,例如 /api/v1/demo 和 /api/v2/demo。

我们可以在 Postman 中验证这一点: 

.NET最小 API 如何进行版本控制?安排!

.NET最小 API 如何进行版本控制?安排!

使用查询字符串参数来指定 API 的版本

要使用查询字符串参数来指定 API 的版本,我们需要替换掉上个示例中的 ApiVersionReader:

builder.Services.AddApiVersioning(options =>
{
    options.ApiVersionReader = new QueryStringApiVersionReader("version");
});

然后,去掉路由中的版本信息:

app.MapGet("/api/demo", () => "Hello MyIO 1.0").WithApiVersionSet(versionSet).HasApiVersion(new ApiVersion(1, 0));
app.MapGet("/api/demo", () => "Hello MyIO 2.0").WithApiVersionSet(versionSet).HasApiVersion(new ApiVersion(2, 0));

Postman 测试一下:

.NET最小 API 如何进行版本控制?安排!

使用 HTTP 头部来传递 API 的版本信息

要使用 HTTP 头部来传递 API 的版本信息,我们需要使用新的 ApiVersionReader:

builder.Services.AddApiVersioning(options =>
{
    options.ApiVersionReader = new HeaderApiVersionReader("api-version");
});

Postman 测试一下:

.NET最小 API 如何进行版本控制?安排!

总结

本文介绍了如何对最小 API 进行版本控制,具体方式如下:

  • 使用 URL 路径来区分不同版本的 API
  • 使用查询字符串参数来指定 API 的版本
  • 使用 HTTP 头部来传递 API 的版本信息