Spring Boot 3 springdoc-openapi-ui no funciona

5 minutos de lectura

Avatar de usuario de Nadar
Nadar

Estoy tratando de agregar swagger-ui (OpenAPI 3.0) a una aplicación Spring Boot v3.

He agregado la dependencia maven de openapi-ui, y debería funcionar según la documentación.

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

Pero aparentemente, todavía no funciona y localhost:8080/swagger-ui.html devuelve un error 404.

¿Qué me estoy perdiendo?

ingrese la descripción de la imagen aquí

  • Si las soluciones a continuación no resuelven el problema, puede verificar mi respuesta en Cómo ejecutar Swagger 3 en Spring Boot 3

    – Murat Yıldız

    18 de marzo a las 9:01

Avatar de usuario de JCompetence
JCompetencia

Según la documentación:

Para primavera-bota 3 soporte, asegúrese de usar springdoc-openapi v2

https://springdoc.org/v2/

Para la integración entre spring-boot y swagger-ui, agregue la biblioteca a la lista de dependencias de su proyecto (no se necesita configuración adicional)

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

Esto implementará automáticamente swagger-ui en una aplicación Spring-Boot:

La documentación estará disponible en formato HTML, utilizando los archivos jar oficiales de swagger-ui.

La página de la interfaz de usuario de Swagger estará disponible en
http://server:port/context-path/swagger-ui.html y la descripción de OpenAPI estará disponible en la siguiente URL para el formato json:
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

Tenga en cuenta que los módulos han sido renombrados:

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

ingrese la descripción de la imagen aquí

  • Este tipo de raro. Según la documentación springdoc.org en la sección de introducción dice. La biblioteca es compatible con OpenAPI 3, Spring-boot (v1, v2 y v3), lo que aparentemente no es cierto. En el entorno Spring Boot 3, algo cambia en las fábricas Spring y los beans Springdoc no se instancian en absoluto.

    – simar

    21 de febrero a las 12:19

  • Todavía no funciona para mí, incluso con Spring Boot 3 y las dependencias correctas.

    – Mono supersónico

    9 de marzo a las 17:11

  • Asegúrese de reemplazar la dependencia springdoc-openapi-ui por la dependencia springdoc-openapi-starter-webmvc-ui. Si usa ambos, la aplicación no se iniciará

    – Hugo Vinhal

    18 de marzo a las 23:39

Avatar de usuario de Suman Maity
maity suman

Estuve completamente de acuerdo con @JCompetence. Tenga en cuenta que
springdoc-openapi-ui ahora cambiado a springdoc-openapi-iniciador-webmvc-ui
desde la bota de resorte 3.

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

Por favor, intente esto. Si desea obtener más información, consulte el enlace oficial:
https://springdoc.org/v2/#features

Avatar de usuario de Alexandr Guravskiy
Alejandro Guravskiy

Para mí ayudó, solo cambió la dependencia.

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

a

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

o

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

Necesitas usar springdoc-openapi v2

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

para kotlin debes agregar una dependencia más

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

luego agregue `@OpenAPIDefinition en su clase principal

@SpringBootApplication
@OpenAPIDefinition
class MyApplication {
}

Avatar de usuario de Anchal Todariya
Anchal Todariya

springdoc-openapi-starter-webmvc-ui no funciona con spring-boot-starter-webflux
hasta que incluyas spring-boot-starter-web. Si incluye seguridad de resorte, entonces está muerto.

  • Esto resolvió todos mis problemas en la vida (bueno, tal vez no en mi vida, pero al menos en mi código)

    – Dragón Slifer

    5 de mayo a las 17:04

  • Para el uso de webflux::: springdoc-openapi-starter-webflux-ui

    – Confort Chauke

    hace 14 horas


Avatar de usuario de DV Singh
DV Singh

Complemento de Maven para generar código (Java) a partir de la especificación OpenApi (archivos .yml)

El generador “spring” admite el espacio de nombres de Jakarta

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

El generador “java” (para generar un cliente) aún no es compatible con el espacio de nombres de Jakarta. Por lo tanto, use el complemento Eclipse Transformer (¡las dependencias de Javax necesitan un alcance proporcionado!)

 <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>

  • Esto resolvió todos mis problemas en la vida (bueno, tal vez no en mi vida, pero al menos en mi código)

    – Dragón Slifer

    5 de mayo a las 17:04

  • Para el uso de webflux::: springdoc-openapi-starter-webflux-ui

    – Confort Chauke

    hace 14 horas


Avatar de usuario de Jay Yadav
jay yadav

¡Solo un complemento si su aplicación tiene habilitada la seguridad de primavera! Luego, deberá incluir en la lista blanca swagger-endpoint para no usar la autenticación

@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();

¿Ha sido útil esta solución?