如何在 v5 中为 Swagger 定义相对路径? [英] How to define a relative path for Swagger in v5?

查看:34
本文介绍了如何在 v5 中为 Swagger 定义相对路径?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将我的 .NET Core 应用程序从 Swashbuckle v4 升级到 v5.我目前在定义相对路径的 Startup.ConfigureServices 中有以下代码:

I am upgrading my .NET Core app from Swashbuckle v4 to v5. I currently have the following code in Startup.ConfigureServices that defines the relative path:

app.UseSwagger(c => {
    c.PreSerializeFilters.Add((swaggerDoc, httpReq) => swaggerDoc.BasePath = "/folder/data");
});

我无法将其转换为 v5.我尝试了以下操作,但看不到在哪里设置路径:

I am having trouble converting this to v5. I tried the following, but I don't see where to set the path:

c.PreSerializeFilters.Add((swagger, httpReq) =>
{
    var paths = new OpenApiPaths();
    var pathItem = new OpenApiPathItem();

    paths.Add("main", pathItem);
    swagger.Paths = paths;

});

推荐答案

在 v5 中 basePath 被 Servers 替换,根据: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1173

您可以使用 routeTemplate 设置 json 文件的路径,以及使用服务器从 ui 发出的请求的路径:

You can set the path of the json file with routeTemplate and path for requests made from ui using servers:

var basePath = "/v1";
 app.UseSwagger(c =>
    {
         c.RouteTemplate = "swagger/{documentName}/swagger.json";
         c.PreSerializeFilters.Add((swaggerDoc, httpReq) =>
    {
            swaggerDoc.Servers = new List<OpenApiServer> { new OpenApiServer 
                 { Url = $"{httpReq.Scheme}://{httpReq.Host.Value}{basePath}" } };
        });
    });

并配置用户界面:

app.UseSwaggerUi(options => 
     {
         options.swaggerEndpoint($"swagger/{apiVersion}/swagger.json, "my api v1");
     }

可以使用 ./或 ../为端点使用相对路径

Relative paths can be used for the endpoint using ./ or ../

这篇关于如何在 v5 中为 Swagger 定义相对路径?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆