当前位置: 首页 > 知识库问答 >
问题:

Springdoc-如何将externalDocs添加到OpenAPI swagger UI自动生成的文档中

逑翰翮
2023-03-14

所以我有一个spring boot项目,我刚刚添加了OpenAPI Swigger UI。它可以自动生成所有控制器和模型的文档。但我想添加一些额外的配置,比如这里显示的externalDocs。

externalDocs:
    url: URL
    description: DESC

但由于它是自动生成的,我没有一个扬眉吐气的YAML。我试图通过一个没有运气的豆子添加以下内容。

import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springframework.context.annotation.Bean;

public class springShopOpenAPI{

    @Bean
    public OpenAPI springShopOpenAPI() {
           return new OpenAPI()
            .info(new Info().title("SpringShop API")
            .description("Spring shop sample application")
            .version("v0.0.1")
            .license(new License().name("Apache 2.0").url("http://springdoc.org")))
            .externalDocs(new ExternalDocumentation()
            .description("SpringShop Wiki Documentation")
            .url("https://springshop.wiki.github.org/docs"));
    }
}

下面是我的Pom。xml,如果需要的话。

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.2.28</version>
</dependency>

谢谢你的建议。

共有2个答案

许俊雅
2023-03-14

我所需要做的就是添加@Configuration并更新我的pom.xml以获得以下内容。

        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-ui</artifactId>
            <version>1.4.4</version>
        </dependency>
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-webmvc-core</artifactId>
            <version>1.4.4</version>
        </dependency>

import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class springShopOpenAPI{



    @Bean
    public OpenAPI customOpenAPI(){
        return new OpenAPI()
                .info(new Info().title("SpringShop API")
                        .description("Spring shop sample application")
                        .version("v0.0.1")
                        .license(new License().name("Apache 2.0").url("http://springdoc.org")))
                .externalDocs(new ExternalDocumentation()
                        .description("SpringShop Wiki Documentation")
                        .url("https://springshop.wiki.github.org/docs"));
    }

}
汤飞
2023-03-14

您需要实现操作自定义器接口来添加外部链接。代码应该如下所示

@Component
public class EndpointCustomizer implements OperationCustomizer {

    @Override
    public Operation customize(Operation operation, HandlerMethod handlerMethod) {
        // Will add the externalDocs to all the endpoints
        operation.externalDocs(new ExternalDocumentation().url("/resource").description("Link to resource"));
        
        return operation;
    }
}

您还可以执行额外的逻辑来添加基于某些条件的extranalDocs。定义类后,您需要在定义OpenAPI Bean的类中创建一个API Group(在您的案例中为springShopOpenAPI类)。

@Bean
public GroupedOpenApi hideApis(EndpointCustomizer endpointCustomizer) {
    return GroupedOpenApi.builder().group("default") // or use null instead of default
            .addOperationCustomizer(endpointCustomizer)
            .build();
}
 类似资料:
  • 我想将图像添加到FastAPI自动留档(由Swagger UI提供),但我不知道如何做到这一点。这是代码: 正如您从代码中看到的那样,我正在尝试使用 URL 执行此操作,我在 ReDoc 和 Swagger UI 中得到的只是作为文本的 URL,而不是实际图像。另外,我想使用存储在本地驱动器中的图像。 我如何才能做到这一点? 先谢谢你。

  • An expert is someone who is one page ahead of you in the manual. — David Knight 像大多数工程师一样,我从来没有阅读过手册,除非或者直到产品实际出现了十万火急的情况。 然而,随着你的配置清单代码不断增多且越来越复杂,使用 Puppet 的自动文档工具 puppet doc 为你的节点(node)和类(class)生成 H

  • 问题内容: 我已经从http://www.oracle.com/technetwork/java/javase/downloads/index.html#docs下载了Java API文档,并且应该使用 窗口->首选项-> Java->已安装的JRE->编辑->“选择rt.jar”-> Javadoc位置 并且该位置已被接受,“验证”就可以了。但是,对我来说,当我将鼠标悬停在某个项目上时(例如在A

  • 我们有个人课。Person类具有类型为PersonDetail的属性。Persondeail有一个类型为Mail类的属性。 当我们启动应用程序并导航到swagger ui html页面时,邮件类不会在openapi定义的组件部分生成,我们会在页面上出现“无法解析引用:无法解析指针:文档中不存在 /components/schemas/Mail”错误。正如我们检查的,如果有一个复杂的类型在第三级,时

  • 问题内容: 在我当前的项目中,我尝试将一个添加到PDFBox文档中。更具体地说,我使用来自的图片。我的代码如下所示: 文档被创建;我可以添加文本,但是出现错误,指出图像没有足够的信息可显示。 任何有关我做错事情的线索? 问题答案: 感谢您帮助我解决垃圾问题。昨晚和今天花了几个小时,人们对PipedIn / OutStreams感到困惑。无法解决。但是,我得到它的工作。事实证明,这并不是很困难。 我

  • 安装配置KnpSnappyBundle扩展 先安装扩展,执行: composer require knplabs/knp-snappy-bundle 再安装wkhtmltopdf工具 wget http://download.gna.org/wkhtmltopdf/0.12/0.12.3/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz xz -d wkh