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?
JCompetencia
Según la documentación:
Para primavera-bota 3 soporte, asegúrese de usar springdoc-openapi 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:
-
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
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
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 {
}
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
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
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();
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