首页 > 编程语言 >【ASP.NET Core Swagger】2、多文档(Group)

【ASP.NET Core Swagger】2、多文档(Group)

时间:2022-10-16 08:55:21浏览次数:60  
标签:Core ASP Group options v1 v2 文档 new public

生成器将在单个 Swagger 文档中包含所有 API 操作。但是,如有必要,您可以创建多个文档。例如,您可能希望每个 API 版本都有一个单独的文档。

案例

添加服务、中间件(v1、v2)

builder.Services.AddSwaggerGen(options =>
{
    //定义多个Swagger 文档
    options.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo()
    {
        Title = "v1 标题",
        Version = "v1"
    });
    options.SwaggerDoc("v2", new Microsoft.OpenApi.Models.OpenApiInfo()
    {
        Title = "v2 标题",
        Version = "v2"
    });
});

app.UseSwagger();
app.UseSwaggerUI(options => {
    options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1~~~");
    options.SwaggerEndpoint("/swagger/v2/swagger.json", "v2~~~");
});

添加两个Controller,分别属于v1、v2:

namespace SwaggerVersion.Controllers.v1
{
    [ApiController]
    [Route("[controller]")]
    [ApiExplorerSettings(GroupName = "v1")]
    public class OrderController : ControllerBase
    {
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }
    }
}
namespace SwaggerVersion.Controllers.v2
{
    [ApiController]
    [Route("[controller]")]
    [ApiExplorerSettings(GroupName = "v2")]
    public class OrderController : ControllerBase
    {
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }
    }
}

按约定为文档分配操作

您可以连接以下约定以根据控制器命名空间进行分组,就不需要[ApiExplorerSettings]

// ApiExplorerGroupPerVersionConvention.cs
public class ApiExplorerGroupPerVersionConvention : IControllerModelConvention
{
    public void Apply(ControllerModel controller)
    {
        var controllerNamespace = controller.ControllerType.Namespace; // e.g. "Controllers.V1"
        var apiVersion = controllerNamespace.Split('.').Last().ToLower();

        controller.ApiExplorer.GroupName = apiVersion;
    }
}

// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(c =>
        c.Conventions.Add(new ApiExplorerGroupPerVersionConvention())
    );

    ...
}

标签:Core,ASP,Group,options,v1,v2,文档,new,public
From: https://www.cnblogs.com/fanfan-90/p/16795604.html

相关文章

  • 【ASP.NET Core Swagger】1、介绍
    介绍:Swagger是为帮助我们生成webapi文档的工具,可以直接从您的路由、控制器和模型生成漂亮的API文档相关Nuget包Swashbuckle.AspNetCore.Swagger:一个Swagger对象模......
  • 学习ASP.NET Core Blazor编程系列六——新增图书(上)
    学习ASP.NETCoreBlazor编程系列一——综述学习ASP.NETCoreBlazor编程系列二——第一个Blazor应用程序(上)学习ASP.NETCoreBlazor编程系列二——第一个Blazor应......
  • .Net Core后端项目部署在Centos 7
    【安装.Net框架】安装.NET之前,请运行以下命令,将Microsoft包签名密钥添加到受信任密钥列表,并添加Microsoft包存储库。打开终端并运行以下命令:sudorpm-Uvhhttps:......
  • asp.net core +vue 导出excel
      定义Excel专用特性名(应用导出表格列名) 引入Nuget包1.Microsoft.AspNetCore.Hosting2.DotNetCore.NPOI   引入包usingNPOI.SS.UserModel;usingN......
  • 如何在ASP.NET Core中获取当前登录的用户标识
    直到ASP.NETCore1.0 RC1:它是System.Security.Claims命名空间中的User.GetUserId().自ASP.NETCore1.0 RC2:您现在必须使用UserManager.您可以创建一个方法来获取......
  • Metasploit训练基础-数据库模块
    数据库当今最常见的数据库通常以行和列的形式将数据存储在一系列的表中,支持用户便捷地访问、管理、修改、更新、控制和组织数据。另外,大多数数据库都使用结构化查询语言(SQ......
  • 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项
    win2012server系统 或 win1164位系统出现CefSharp67.00:System.IO.FileNotFoundException:未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项。找不到......
  • .Net Core redis 调用报错 '6000 Redis requests per hour' 解决 6000 此调用限制
    问题描述redis是一种基于内存,性能高效的NoSQL数据库,性能高主要就体现在数据交互耗时较短,能够段时快速的对用户的请求做出反应,所以在业务比较复杂或交互量需求大时,必然......
  • 获取成本中心层级BAPI_COSTCENTERGROUP_GETDETAIL
    T-CODE:OKEON可以查看成本中心层级如果你查找对应的表,会查找到  SETHEADER和对应的SETHEADERT文本表对照数据可能发下问题应该还有别的判断条件,其他字段这里也不继续看......
  • MediatR:EF Core中发布领域事件
    领域事件大部分发生在领域模型的业务逻辑方法上或者领域服务上,我们可以在一个领域事件发生的时候立即调用IMediator的Publish方法来发布领域事件。我们一般在聚合根的实体......