代码之家  ›  专栏  ›  技术社区  ›  SinaMN75

最小API的Swagger

  •  0
  • SinaMN75  · 技术社区  · 2 年前

    我正在尝试在我的项目中使用最小的API。我面临的问题是,传统的控制器在某种程度上会为每个控制器生成一个单独的部分。但我看不到在最小API中添加这种分离的选项。 是否可以使用最少的API在Swagger中添加不同的部分?

    0 回复  |  直到 2 年前
        1
  •  8
  •   Guru Stron    2 年前

    您可以使用 WithTags 扩展方法:

    OpenAPI支持使用标签对象进行分类 operations 这些标签通常用于对Swagger UI中的操作进行分组。这些标签可以通过调用 WithTags 端点上具有所需标签的扩展方法。

    app.MapGet("/one", () => "Hello World!").WithTags("xyz");
    app.MapGet("/two", () => "Hello World!").WithTags("xyz");
    

    enter image description here

    它搭配得很好 MapGroup :

    这个 地图集团 扩展方法有助于使用通用前缀组织端点组。它减少了重复的代码,并允许通过对以下方法的单个调用来定制整个端点组 RequireAuthorization WithMetadata 其添加端点元数据。

    var adminGroup = app.MapGroup("/admin")
        .WithTags("admin");
    adminGroup.MapGet("/adminThing", () => "some");
    adminGroup.MapPost("/doAdminThing", () => "some1");
    
    var userGroup = app.MapGroup("/user")
        .WithTags("user");
    userGroup.MapGet("/userThing", () => "some");
    userGroup.MapPost("/doUserThing", () => "some1");
    

    enter image description here

        2
  •  2
  •   PancakeAlchemist    2 年前

    您可以使用 .WithOpenApi() 扩展,例如

    app.MapGet("/", ...)
     .WithOpenApi(o => {Tags = new List<string>{"Section1"}})