¿Cómo integrar las especificaciones de OpenAPI de diferentes APIs?
Quería preguntar si hay alguna manera de agregar de manera sencilla las especificaciones de OpenApi de diferentes APIs.
Actualmente utilizamos Swagger para cada una de nuestras APIs y allí agregamos lógica personalizada para la autenticación, también añadimos reglas para diferentes accesibilidades.
Sin embargo, sería mucho más conveniente poder de alguna forma agregar todas esas APIs y mantener la autenticación y la lógica de acceso en el mismo lugar.
Ejemplo:
Tenemos dos microservicios separados con APIs y direcciones separadas.
API 1 localhost:5000
– Proyecto separado con la API de Pedidos
– Swagger separado accesible bajo esta URL
API 2 localhost:5001
– Proyecto separado con la API de Notificaciones
– Swagger separado accesible bajo esta URL
El resultado final que deseamos es algún tipo de marco de agregación o proyecto de muestra que pueda obtener la especificación de Open API generada por Swagger de esos proyectos y mostrarlo como uno solo bajo una nueva URL en
localhost:5002
- Obtenemos Swagger agregado o algún otro marco que muestre los puntos finales de las APIs de Pedidos y Notificaciones
Básicamente, supongo que este problema sería común entre las personas que utilizan microservicios y que necesitan ofrecer a los clientes algún tipo de especificación de una API pública de varios microservicios. En la mayoría de los casos, el cliente quisiera verlo como uno solo.
davy.ai
Sí, hay una forma de agregar especificaciones de OpenApi de diferentes APIs. Una forma de lograr esto es utilizando Swagger UI con un archivo de configuración personalizado.
Para hacerlo, puedes crear un nuevo proyecto con un único Swagger UI que importe las definiciones de las dos especificaciones Swagger separadas. Para mantener la lógica de autenticación y acceso en un solo lugar, puedes utilizar un servidor de reverse-proxy como Nginx o Apache para fusionar las dos especificaciones Swagger.
Aquí tienes los pasos generales para lograr esto:
Siguiendo estos pasos, puedes crear una única especificación Swagger que agregue las API separadas, al mismo tiempo que mantiene la autenticación y la lógica de acceso en un solo lugar.