如何使SwaggerGen在.net内核中实现操作路径的相对化?

q8l4jmvw  于 2023-03-02  发布在  .NET
关注(0)|答案(1)|浏览(126)

我正在运行一对夫妇。net核心webapi后面的反向代理。我已经得到了Swagger用户界面加载swagger json。然而,在json文档中的操作路径不是相对的,这打破了尝试它的功能的swaggerUI作为请求发送到根。我该如何去使请求相对?

pu3pd22g

pu3pd22g1#

您可以使用预序列化过滤器操作Open API文档。
您可以将“开放式API路径”复制到具有新密钥/路径的新(临时)集合,清除原始集合,然后将新集合复制回以替换它:

app.UseSwagger(options =>
{
    options.PreSerializeFilters.Add((openApiDocument, httpRequest) =>
    {
        OpenApiPaths tempOpenApiPaths = new OpenApiPaths();
        foreach (KeyValuePair<string, OpenApiPathItem> openApiPath in openApiDocument.Paths)
        {
            tempOpenApiPaths.Add("/foo" + openApiPath.Key, openApiPath.Value);
        }

        openApiDocument.Paths.Clear();
        foreach (KeyValuePair<string, OpenApiPathItem> openApiPath in tempOpenApiPaths)
        {
            openApiDocument.Paths.Add(openApiPath.Key, openApiPath.Value);
        }
    });
});

相关问题