• 最小API如何进行版本控制?
  • 发布于 2个月前
  • 238 热度
    0 评论
API 版本控制允许开发人员在不破坏现有客户端的情况下对 API 进行更改或增强。API 版本控制的好处是,它可以提高 API 的可维护性、灵活性和安全性。

API 版本控制的常用方法有以下几种:
1.使用 URL 路径来区分不同版本的 API,例如 /api/v1/demo 和 /api/v2/demo。
2.使用查询字符串参数来指定 API 的版本,例如 /api/demo?version=1 和 /api/demo?version=2。
3.使用 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 中验证这一点: 

使用查询字符串参数来指定 API 的版本
要使用查询字符串参数来指定 API 的版本,我们需要替换掉上个示例中的 ApiVersionReader:
builder.Services.AddApiVersioning(options =>
{
   // 堆代码 duidaima.com
    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 测试一下:

使用 HTTP 头部来传递 API 的版本信息
要使用 HTTP 头部来传递 API 的版本信息,我们需要使用新的 ApiVersionReader:
builder.Services.AddApiVersioning(options =>
{
    options.ApiVersionReader = new HeaderApiVersionReader("api-version");
});
Postman 测试一下:

总结
本文介绍了如何对最小 API 进行版本控制,具体方式如下:
1.使用 URL 路径来区分不同版本的 API
2.使用查询字符串参数来指定 API 的版本
3.使用 HTTP 头部来传递 API 的版本信息
用户评论