gpt4 book ai didi

swagger - 使用 Swashbuckle Asp.Net Core for ReDoc 添加 x-logo 供应商扩展

转载 作者:行者123 更新时间:2023-12-04 11:29:10 24 4
gpt4 key购买 nike

我正在为 ReDoc 使用 swagger.json 文件(由 Swashbuckle 生成)来显示 API 文档。

我需要什么:
添加 x-logo使用 Swashbuckle(Swashbuckle.AspNetCore.SwaggerGen 库)生成的 swagger json 的供应商扩展,以便 ReDoc UI 在左上角显示 Logo like this
enter image description here

问题:
我可以添加 x-log到 swagger.json 文件,但它被添加到文件的错误部分。它需要在 info 内部分。

这就是我添加 x-logo 所做的工作

  • 创建了一个文档过滤器,如下所示

  •     public class XLogoDocumentFilter : IDocumentFilter
    {
    public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
    {
    swaggerDoc.Extensions["x-logo"] = new { url = "https://URL/of/the/logo", altText = "Company Logo" };
    }

    }
  • 将过滤器添加到 SwaggerDoc

  • services.AddSwaggerGen(options => 
    {
    options.DocumentFilter<XLogoDocumentFilter>();

    });

    实际的
        {
    "swagger": "2.0",
    "info": {
    "version": "v1",
    "title":"Sample REST API"
    },
    "x-logo": {
    "url": "https://rebilly.github.io/ReDoc/petstore-logo.png",
    "altText": "Aimia Logo"
    }
    }

    预期的
        {
    "swagger": "2.0",
    "info": {
    "version": "v1",
    "title":"Sample REST API",
    "x-logo": {
    "url": "https://rebilly.github.io/ReDoc/petstore-logo.png",
    "altText": "Aimia Logo"
    }
    },

    }

    非常感谢您提供 x-logo 的任何帮助或建议在 swagger.json 文件的正确部分。

    最佳答案

    输入问题后,我自己找到了解决方案。不要直接将扩展添加到 swaggerDoc,而是将其添加到 swaggerDoc.Info 对象。

    public class XLogoDocumentFilter : IDocumentFilter
    {
    public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
    {
    // need to check if extension already exists, otherwise swagger
    // tries to re-add it and results in error
    if (!swaggerDoc.Info.Extensions.ContainsKey("x-logo"))
    {
    swaggerDoc.Info.Extensions.Add("x-logo", new {
    url = "https://URL/To/The/Logo",
    altText = "Logo",
    });
    }

    }

    }

    关于swagger - 使用 Swashbuckle Asp.Net Core for ReDoc 添加 x-logo 供应商扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54335549/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com