es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

SpringDoc con endpoints funcionales de Spring Webflux

Estoy utilizando los puntos finales funcionales de Spring Webflux y me gustaría generar una definición openAPI para esto.

Agregué SpringDoc, pero la definición openAPI resultante está vacía:

json
{
"openapi": "3.0.1",
"info": {
"title": "Definición OpenAPI",
"version": "v0"
},
"servers": [
{
"url": "http://localhost:8080",
"description": "URL del servidor generado"
}
],
"paths": {},
"components": {}
}

Los puntos finales se definen así:

@Configuration(proxyBeanMethods = false)
public class Routers {

@Bean
public RouterFunction<ServerResponse> uploadRoute(UploadHandler uploadHandler) {
    return RouterFunctions
            .route(POST("/api/upload").and(accept(MediaType.MULTIPART_FORM_DATA)), uploadHandler::handleUploadedFiles);
}
}

¿Es posible derivar una definición openAPI de los puntos finales funcionales de Spring?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible generar una definición OpenAPI a partir de los puntos finales funcionales de Spring Webflux utilizando SpringDoc. Sin embargo, para que la definición OpenAPI sea generada correctamente, los puntos finales deben usar las anotaciones de WebFlux de Spring, como @GetMapping, @PostMapping, etc., en lugar de los puntos finales funcionales.

    Para generar la definición OpenAPI, simplemente agregue la anotación @EnableOpenApi a la clase de su aplicación SpringBoot, y SpringDoc generará automáticamente la definición OpenAPI basada en los puntos finales de WebFlux. Por ejemplo:

    @SpringBootApplication
    @EnableOpenApi
    public class MyApp {
    
        public static void main(String[] args) {
            SpringApplication.run(MyApp.class, args);
        }
    
        @RestController
        public class MyController {
    
            @GetMapping("/hello")
            public String hello() {
                return "¡Hola Mundo!";
            }
    
        }
    
    }
    

    En este ejemplo, SpringDoc generará una definición OpenAPI para el punto final /hello con una operación GET.

    Tenga en cuenta que si se requieren puntos finales funcionales, hay una función experimental en SpringDoc llamada “Functional WebFlux API”, que puede proporcionar documentación OpenAPI para puntos finales funcionales. Esto aún está en desarrollo y debe ser utilizado con precaución.

Comments are closed.