如何使用 springdoc-openapi 将 Open API 3 与 Spring 项目(不是 Spring Boot)集成

2022-09-03 14:54:42

我的现有项目是在Spring Framework上而不是Spring Boot上。

我想将Open API 3与它集成。

我想使用springdoc-openapi集成,而不是使用泽西岛。


答案 1

使用 springdoc-openapi-ui 1.5.2 的 spring-mvc (5.3.1) 的 ui 负载看起来更简单:

build.gradle (gradle version 6.5)

implementation 'org.springdoc:springdoc-openapi-ui:1.5.2'

spring-boot-autoconfigure 和 spring-boot 在 dependencies 部分中不是显式需要的,因为 org.springdoc:springdoc-openapi-ui:1.5.2 已经同时拥有它们(版本 2.4.0)。您会惊讶于将向最终应用程序添加多少依赖项以及哪些依赖项。

OpenApiConfig.java

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"org.springdoc"})
@Import({org.springdoc.core.SpringDocConfiguration.class,
         org.springdoc.webmvc.core.SpringDocWebMvcConfiguration.class,
         org.springdoc.webmvc.ui.SwaggerConfig.class,
         org.springdoc.core.SwaggerUiConfigProperties.class,
         org.springdoc.core.SwaggerUiOAuthProperties.class,
         org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration.class})

class OpenApiConfig implements WebMvcConfigurer {
}

组件扫描应涵盖 OpenApiConfig 包。

在使用Spring Security的情况下,您可以添加两个url模式,并在代码中定义OpenAPI页面访问的角色。

<security:intercept-url pattern="/swagger*/**" access="ROLE_DEVELOPER"/>
<security:intercept-url pattern="/v3/api-docs" access="ROLE_DEVELOPER"/>

要检查的网址:

http://localhost:8080/your_context_path/swagger-ui.html
http://localhost:8080/your_context_path/v3/api-docs

答案 2

您可以使用@Annotations

import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.servers.Server;
import io.swagger.v3.oas.annotations.info.Info

@OpenAPIDefinition(info = @Info(title = "My REST API", version = "1.2.6",
            description = "My OpenAPIDefinition description"),
                servers = { @Server(url = "/my-api", description = "Default URL")})
public class OpenApiConfig { }

Springdoc OpenAPI UIMaven Central Repository 上的 Dependency:

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

Maven Central Repository:


推荐