Spring Boot 3 springdoc-openapi-ui 不工作

问题描述 投票:0回答:9

我正在尝试将 swagger-ui (OpenAPI 3.0) 添加到 Spring Boot v3 应用程序中。

我已经添加了 openapi-ui maven 依赖项,它应该按照文档工作。

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

但显然,它仍然不起作用并且 localhost:8080/swagger-ui.html 返回 404 错误。

我错过了什么?

java spring spring-boot swagger-ui
9个回答
64
投票

根据文档:

对于 spring-boot 3 支持,请确保使用 springdoc-openapi v2

https://springdoc.org/v2/

对于spring-boot和swagger-ui的集成,添加 库添加到项目依赖项列表中(无需额外 需要配置)

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.0.0</version>
</dependency>

这将自动部署 swagger-ui 到 spring-boot 应用:

文档将以 HTML 格式提供,使用官方 swagger-ui 罐子

Swagger UI 页面随后将在

http://server:port/context-path/swagger-ui.html
和 OpenAPI json 格式的描述将在以下 url 中提供:
http://server:port/context-path/v3/api-docs

server: The server name or IP

port: The server port

context-path: The context path of the application

Documentation can be available in yaml format as well, on the following path : /v3/api-docs.yaml

请注意模块已重命名:

https://springdoc.org/v2/#migrating-from-springdoc-v1


15
投票

我完全同意@JCompetence。请注意 springdoc-openapi-ui现在更改为springdoc-openapi-starter-webmvc-ui 来自 spring boot 3.

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.0.2</version>
</dependency>

请试试这个。如果您想查找更多信息,请查看官方链接: https://springdoc.org/v2/#features


10
投票

对我有帮助,只是改变了依赖性

   implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.6.11'

    implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.0.0'

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.0.0</version>
</dependency>

3
投票

springdoc-openapi-starter-webmvc-ui
不适用于
spring-boot-starter-webflux
直到你包括
spring-boot-starter-web
。 如果你包括弹簧安全那么它就死了。


2
投票

你需要使用springdoc-openapi v2

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.0.4</version>
</dependency>

对于kotlin你必须多加一个依赖

<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-kotlin</artifactId>
</dependency>

然后在您的主类上添加`@OpenAPIDefinition

@SpringBootApplication
@OpenAPIDefinition
class MyApplication {
}

1
投票

从 OpenApi 规范(.yml 文件)生成(Java)代码的 Maven 插件

生成器“spring”支持 Jakarta 命名空间

<plugin>
    <groupId>org.openapitools</groupId>
    <artifactId>openapi-generator-maven-plugin</artifactId>
    <configuration>
        <configOptions>
            ...
            **<useSpringBoot3>true</useSpringBoot3>**
        </configOptions>
    </configuration>
</plugin>

生成器“java”(生成客户端)还不支持 Jakarta 命名空间。 所以使用 Eclipse Transformer 插件(需要提供 Javax 依赖范围!)

 <plugin>
        <groupId>org.eclipse.transformer</groupId>
        <artifactId>transformer-maven-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <rules>
           <jakartaDefaults>true</jakartaDefaults>
         </rules>
       </configuration>
        <executions>
            <execution>
                <id>jakarta-ee</id>
                <goals><goal>jar</goal></goals>
                <phase>package</phase>
                <configuration>
                    <artifact>
                        <groupId>${project.groupId}</groupId>
                        <artifactId>${project.artifactId}</artifactId>
                    </artifact>
                </configuration>
            </execution>
        </executions>
    </plugin>

0
投票

如果您的应用程序启用了 spring 安全性,则只是一个附加组件! 然后您需要将 swagger-endpoint 列入白名单以不使用身份验证

@Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
        httpSecurity.csrf().disable().authorizeHttpRequests(auth -> {
            auth.requestMatchers("/v3/**", "/swagger-ui/**").permitAll();
            auth.anyRequest().authenticated();
        });

return httpSecurity.build();

0
投票

您还需要将此注释添加到您的 SpringBootApp 主类: @OpenAPIDefinition

@SpringBootApplication
@OpenAPIDefinition
class MyApplication

0
投票

对于 Spring Security 支持,请使用 Below 依赖项

implementation("org.springdoc:springdoc-openapi-starter-common:2.1.0")
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0")

来自https://springdoc.org/v2/#migrating-from-springfox

© www.soinside.com 2019 - 2024. All rights reserved.