如何使用自定义的swagger文件而不是.net核心Web API中的自动生成的文件来使大张旗鼓

问题描述 投票:0回答:1

创建了新的.net core 3.1 Web Api项目,并将Swashbuckle配置为使用swagger。

一切正常,但是我需要我的应用程序使用我自己的swagger spec文件而不是自动生成的文件(\swagger\v1\swagger.json

我搜索了很多帖子,例如this,但在此都没有帮助。

我已经在项目的根路径中创建了my-custom-swagger.json文件(与.csproj相同的目录)

Startup.cs

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseStaticFiles();
        app.UseSwagger();

    //    app.UseStaticFiles(new StaticFileOptions
    //{
    //    FileProvider = new PhysicalFileProvider(AppContext.BaseDirectory),
    //    RequestPath = "my-custom-swagger.json"
    //    });

        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "Core Test SW");
            c.RoutePrefix = string.Empty;
        });

如何使我大张旗鼓地使用my-custom-swagger.json文件而不是自动生成的文件

.net-core swagger swashbuckle
1个回答
0
投票

默认情况下,Swagger将返回默认文档,其中包括项目中所有REST服务的描述。

但是,可以通过调用DocInclusionPredicate(Func<string, ApiDescription> predicate)来更改此默认值-必须将该函数传递给一个函数,该函数接收JSON文档名称和操作方法描述,并且如果该操作的文档应包含在该JSON文档中,则应返回true 。

以下未测试的代码。

services.AddSwaggerGen(c => {
    c.DocInclusionPredicate((docName, description) => {
        if (docName == "my-custom-swagger") {
            return true;
        }

        return false;
    });

})

所有功劳应该归功于:具备C#8和.NET Core 3的软件架构知识。]

© www.soinside.com 2019 - 2024. All rights reserved.