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?
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: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.