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

ni65a41a  于 2022-11-06  发布在  Spring
关注(0)|答案(3)|浏览(310)

因此,我有一个Spring Boot 项目,我刚刚添加了OpenAPI Swagger UI。它自动生成文档,非常适合我们所有的控制器和模型。但我想添加一些额外的配置,如externalDocs,如这里所示。

externalDocs:
    url: URL
    description: DESC

但是由于它是自动生成的,我没有一个YAML来表示swagger。我试着通过一个Bean来添加它,但没有成功。

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>

谢谢你的建议。

gc0ot86w

gc0ot86w1#

您需要实现OperationCustomizer接口来添加外部链接。

@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;
    }
}

您还可以执行其他逻辑来根据特定条件添加externalDocs。一旦定义了类,您需要在定义OpenAPI Bean的类中创建一个API组(在您的示例中为springShopOpenAPI类)。

@Bean
public GroupedOpenApi hideApis(EndpointCustomizer endpointCustomizer) {
    return GroupedOpenApi.builder().group("default") // or use null instead of default
            .addOperationCustomizer(endpointCustomizer)
            .build();
}
v64noz0r

v64noz0r2#

我所需要做的就是添加@Configuration并更新我的pom.xml,使其具有以下内容。
第一个

pbossiut

pbossiut3#

如果有人试图添加一个链接到@Tag,例如链接到一个wiki页面,这也可以通过externalDocs关键字来完成,如下所示:

@RestController
@Tag(name = "MyController",
     description = "MyController goal is ...",
     externalDocs = @ExternalDocumentation(description = "Wiki page about MyController.", url = "https://confluence.mycorp.com/display/..."))
public class MyController { ...

相关问题