如何在Asp.Net Core MVC项目中为Swagger文档明确定义API控制器路径

阿比·阿布斯(AbhiAbzs)

我正在开发内部带有Web API项目的Asp.Net核心3.1 MVC Web应用程序。现在,我仅想为API项目配置Swagger文档,那么如何在配置中指定仅将Web API控制器用于文档?

在ConfigureServices方法内的启动类中,对摇摇欲坠的配置如下:-

services.AddSwaggerGen(option =>
{
    option.SwaggerDoc("v1.0",
        new OpenApiInfo
        {
            Title = "ProjName OpenApi",
            Version = "1.0",
            //Description = //get from appsettings.json
        });
    var xmlCommentFileName = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    var xmlCommentFilePath = Path.Combine(AppContext.BaseDirectory, xmlCommentFileName);
    option.IncludeXmlComments(xmlCommentFilePath);
});

配置方法中的配置如下:

app.UseSwagger(option =>
{
    option.RouteTemplate = "docs/{documentname}/swagger.json";
});
app.UseSwaggerUI(option =>
{
    option.SwaggerEndpoint("/docs/v1.0/swagger.json", "ProjName OpenApi v1.0");
    option.RoutePrefix = "docs/v1.0";
    option.DocumentTitle = "ProjName OpenAPI Docs";
});

问题在于,swagger gen正在控制器文件夹,“管理和标识区域”中寻找用于生成文档的文件,但我想将其配置为仅使用WebApi文件夹中的控制器。在这些文档中已指定“路由属性”的所有Controllers或Action方法也会在API文档中列出。如何排除这些?

有人可以帮我这个忙吗?我真的被困在这里。

PS:我想提一下,我无法将API层移到其单独的项目中。

张白兰

根据您的描述,建议您尝试创建一个自定义过滤器,以检查控制器名称是否为mvc controller,然后删除其路由。

更多详细信息,您可以参考以下代码:

Startup.cs ConfigureServices方法:

        services.AddSwaggerGen(option =>
        {
            option.SwaggerDoc("v1.0",
new OpenApiInfo
{
    Title = "ProjName OpenApi",
    Version = "1.0"});
            option.DocumentFilter<HideInDocsFilter>();

        });

HideInDocsFilter

public class HideInDocsFilter : IDocumentFilter
{
    public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
    {
        foreach (var apiDescription in context.ApiDescriptions)
        {
             // replace the data to your controller name
            if (apiDescription.ActionDescriptor.DisplayName.Contains("Data"))
            {
                var route = "/" + apiDescription.RelativePath.TrimEnd('/');
                swaggerDoc.Paths.Remove(route);
            }
        }
    }
}

结果:

仅包含WeatherForecast控制器方法

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在ASP.NET Core Web API中将新控制器设置为默认控制器

来自分类Dev

如何在 ASP Net Core 中授权 Web API 控制器

来自分类Dev

maxReceivedMessageSize 如何在 Asp.net Core Api 中设置?

来自分类Dev

如何在ASP.NET Core MVC项目中向特定区域提交表单?

来自分类Dev

如何在ASP.NET Core 2.2项目中为子域正确启用CORS?

来自分类Dev

如何在ASP.NET Core控制器中接收“多部分/混合”

来自分类Dev

如何在ASP.NET Core WebApi控制器中获取当前登录的用户

来自分类Dev

如何在ASP.NET Core中找到具有特殊名称空间的控制器

来自分类Dev

如何在带有 ASP.NET Core 的控制器中使用泛型方法

来自分类Dev

单元测试-控制器未从ASP.NET Core Web API项目中的模拟IConfiguration中获取值

来自分类Dev

如何在ASP.NET MVC 6(ASP.NET Core)中获取returnUrl AccessDeniedPath

来自分类Dev

如何在ASP.NET Core RC2中获取控制器的自定义属性

来自分类Dev

如何在Blazor应用程序中导航到ASP.NET Core MVC控制器?

来自分类Dev

如何在ASP.NET Core Web API中使用相同数量的参数重载控制器方法?

来自分类Dev

如何在api MVC Project Net Core 3.1中向控制器添加动作

来自分类Dev

我如何在 asp.net web api 项目而不是 .net core 上使用 DI

来自分类Dev

如何在同一项目中的ASP.NET MVC控制器中从ASP.NET Web API获取数据

来自分类Dev

如何在同一项目中的ASP.NET MVC控制器中从ASP.NET Web API获取数据

来自分类Dev

如何在ASP Net Core项目中添加类库项目的引用

来自分类Dev

控制器动作如何调用Asp .Net Core?

来自分类Dev

从ASP.NET Core MVC中的控制器返回Pdf文档

来自分类Dev

如何在ASP.NET Core项目中读取本地文件?

来自分类Dev

如何在Visual Studio的ASP.NET Core项目中衡量代码覆盖率?

来自分类Dev

如何在带有身份的ASP.NET Core项目中禁用HTTPS?

来自分类Dev

如何在Angular项目中显示保存在wwwroot(asp.net core)中的图像

来自分类Dev

如何在Visual Studio的ASP.NET Core项目中衡量代码覆盖率?

来自分类Dev

如何在asp.net mvc core中获取页面路径

来自分类Dev

如何在.NET Core项目中引用.NET Framework项目?

来自分类Dev

如何在运行于ASP.NET Core 3.1的启用OData的Web API中添加Swagger

Related 相关文章

  1. 1

    如何在ASP.NET Core Web API中将新控制器设置为默认控制器

  2. 2

    如何在 ASP Net Core 中授权 Web API 控制器

  3. 3

    maxReceivedMessageSize 如何在 Asp.net Core Api 中设置?

  4. 4

    如何在ASP.NET Core MVC项目中向特定区域提交表单?

  5. 5

    如何在ASP.NET Core 2.2项目中为子域正确启用CORS?

  6. 6

    如何在ASP.NET Core控制器中接收“多部分/混合”

  7. 7

    如何在ASP.NET Core WebApi控制器中获取当前登录的用户

  8. 8

    如何在ASP.NET Core中找到具有特殊名称空间的控制器

  9. 9

    如何在带有 ASP.NET Core 的控制器中使用泛型方法

  10. 10

    单元测试-控制器未从ASP.NET Core Web API项目中的模拟IConfiguration中获取值

  11. 11

    如何在ASP.NET MVC 6(ASP.NET Core)中获取returnUrl AccessDeniedPath

  12. 12

    如何在ASP.NET Core RC2中获取控制器的自定义属性

  13. 13

    如何在Blazor应用程序中导航到ASP.NET Core MVC控制器?

  14. 14

    如何在ASP.NET Core Web API中使用相同数量的参数重载控制器方法?

  15. 15

    如何在api MVC Project Net Core 3.1中向控制器添加动作

  16. 16

    我如何在 asp.net web api 项目而不是 .net core 上使用 DI

  17. 17

    如何在同一项目中的ASP.NET MVC控制器中从ASP.NET Web API获取数据

  18. 18

    如何在同一项目中的ASP.NET MVC控制器中从ASP.NET Web API获取数据

  19. 19

    如何在ASP Net Core项目中添加类库项目的引用

  20. 20

    控制器动作如何调用Asp .Net Core?

  21. 21

    从ASP.NET Core MVC中的控制器返回Pdf文档

  22. 22

    如何在ASP.NET Core项目中读取本地文件?

  23. 23

    如何在Visual Studio的ASP.NET Core项目中衡量代码覆盖率?

  24. 24

    如何在带有身份的ASP.NET Core项目中禁用HTTPS?

  25. 25

    如何在Angular项目中显示保存在wwwroot(asp.net core)中的图像

  26. 26

    如何在Visual Studio的ASP.NET Core项目中衡量代码覆盖率?

  27. 27

    如何在asp.net mvc core中获取页面路径

  28. 28

    如何在.NET Core项目中引用.NET Framework项目?

  29. 29

    如何在运行于ASP.NET Core 3.1的启用OData的Web API中添加Swagger

热门标签

归档