如何使用 springdoc-openapi 将 Open API 3 与 Spring 项目(不是 Spring Boot)集成
2022-09-03 14:54:42
我的现有项目是在Spring Framework上而不是Spring Boot上。
我想将Open API 3与它集成。
我想使用springdoc-openapi集成,而不是使用泽西岛。
我的现有项目是在Spring Framework上而不是Spring Boot上。
我想将Open API 3与它集成。
我想使用springdoc-openapi集成,而不是使用泽西岛。
使用 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
您可以使用@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 UI 在 Maven Central Repository 上的 Dependency:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.4.6</version>
</dependency>
Maven Central Repository: