最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.NET?10?使用?Microsoft.AspNetCore.OpenApi?實現(xiàn)?API?版本管理的過程詳解

 更新時間:2026年05月06日 08:55:14   作者:鄧磊Lei  
本文介紹了API版本管理的重要性及常見的版本策略,詳細講述了如何使用Microsoft.AspNetCore.OpenApi和Asp.Versioning實現(xiàn)基于URL路徑的API版本管理,并生成獨立的OpenAPI文檔,感興趣的朋友跟隨小編一起看看吧

 為什么 API 版本管理如此重要?

API 版本管理的核心目標是:在不破壞現(xiàn)有用戶的前提下,持續(xù)迭代和改進 API。通過版本管理,我們可以:

  • 引入新功能:在新版本中添加字段、接口等,而不影響舊版本的用戶。
  • 修復 bug:在新版本中修復問題,而不冒破壞舊版本的風險。
  • 逐步淘汰:在新版本中移除過時的功能,給用戶足夠的時間遷移。

常見的版本策略有這幾種:

  • URL 路徑版本:/api/v1/users,直觀,最常見
  • 查詢參數(shù)版本:/api/users?api-version=1.0
  • 請求頭版本:X-API-Version: 1.0
  • 媒體類型版本:Accept: application/json; v=1.0(GitHub 在用這種方式)

每種方式都有適用場景,沒有絕對的優(yōu)劣。

在 C# 生態(tài)中,長期以來的事實標準是 Swashbuckle.AspNetCore,但它并沒有內(nèi)置版本管理支持,需要配合 Asp.Versioning 來實現(xiàn)。

終于,在 .NET 10 中,微軟推出了自己的 OpenAPI 庫 Microsoft.AspNetCore.OpenApi,并且 Asp.Versioning v10 也正式支持了這個庫,版本管理和文檔生成終于可以無縫結(jié)合了。

上手 Microsoft.AspNetCore.OpenApi 和 Asp.Versioning

要使用 Microsoft.AspNetCore.OpenApi 和 Asp.Versioning 來實現(xiàn) API 版本管理,首先需要安裝相關(guān) NuGet 包:

#package: Asp.Versioning.Http 10.0.0
#package: Asp.Versioning.Mvc 10.0.0
#package: Asp.Versioning.Mvc.ApiExplorer 10.0.0
#package: Microsoft.AspNetCore.OpenApi 10.0.0
#package: Scalar.AspNetCore 2.6.0

安裝完成后,在 Program.cs 中進行如下配置:

services
    .AddApiVersioning(options =>
    {
        options.DefaultApiVersion = new ApiVersion(1, 0);
        options.AssumeDefaultVersionWhenUnspecified = true;
        options.ReportApiVersions = true;
        options.ApiVersionReader = new UrlSegmentApiVersionReader();
    })
    .AddMvc()
    .AddApiExplorer(options =>
    {
        options.GroupNameFormat = "'v'V";
        options.SubstituteApiVersionInUrl = true;
    });
services.AddOpenApi("v1", options =>
{
    options.ShouldInclude = apiDescription => apiDescription.GroupName == "v1";
});
services.AddOpenApi("v2", options =>
{
    options.ShouldInclude = apiDescription => apiDescription.GroupName == "v2";
});
app.MapOpenApi();
app.MapScalarApiReference(options =>
{
    options
        .WithTitle("Users API - {documentName}")
        .AddDocuments(new[] { "v1", "v2" });
});

在上面的代碼中,我們首先配置了 API 版本管理,指定了默認版本、版本讀取方式等。然后,我們?yōu)槊總€版本配置了 OpenAPI 文檔生成,確保每個版本都有獨立的文檔。最后,我們映射了 OpenAPI 和 Scalar API Reference 的路由。

控制器方面,我們可以使用特性來指定版本:

[ApiController]
[Route("api/v{version:apiVersion}/[controller]")]
[ApiVersion("1.0")]
public class UsersController : ControllerBase
{
    [HttpGet]
    [MapToApiVersion("1.0")]
    public IActionResult GetV1()
    {
        return Ok(new { Version = "v1", Users = new[] { "Alice", "Bob" } });
    }
}
[ApiController]
[Route("api/v{version:apiVersion}/[controller]")]
[ApiVersion("2.0")]
public class UsersV2Controller : ControllerBase
{
    [HttpGet]
    [MapToApiVersion("2.0")]
    public IActionResult GetV2()
    {
        return Ok(new { Version = "v2", Users = new[] { "Alice", "Bob", "Charlie" } });
    }
}

通過上述配置,我們就實現(xiàn)了基于 URL 路徑的 API 版本管理,并且每個版本都有獨立的 OpenAPI 文檔。

這里還使用了一個叫 Scalar 的庫來生成 API 參考文檔。Scalar 是一個專注于生成 API 參考文檔的庫,支持多版本文檔生成和定制化配置。通過 Scalar,我們可以輕松地為每個 API 版本生成漂亮的參考文檔,方便開發(fā)者查閱。

上一張 Scalar 的圖(和本項目無關(guān))

我把實驗項目的代碼放在了 GitHub 上,歡迎大家參考:
https://github.com/denglei1024/openapi-apiversion

到此這篇關(guān)于.NET 10 使用 Microsoft.AspNetCore.OpenApi 實現(xiàn) API 版本管理的過程詳解的文章就介紹到這了,更多相關(guān).net 使用microsoft.aspnetcore.openapi內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

永登县| 隆安县| 龙井市| 上饶市| 峨眉山市| 灵璧县| 昌乐县| 依安县| 营山县| 青海省| 上林县| 上饶县| 朝阳区| 石棉县| 衡东县| 景宁| 托克托县| 通江县| 商丘市| 滕州市| 黑水县| 镇宁| 肇州县| 宜章县| 黄龙县| 南召县| 调兵山市| 郸城县| 张掖市| 顺昌县| 襄樊市| 中卫市| 兴安盟| 历史| 麻阳| 碌曲县| 扶风县| 司法| 奈曼旗| 呼图壁县| 饶河县|