如何在 v5 中为 Swagger 定义相对路径? [英] How to define a relative path for Swagger in v5?
问题描述
我正在将我的 .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屋!