Versionado de APIs con OpenAPI para compatibilidad entre versiones

Clase 12 de 19Curso de API First

Resumen

El versionado de una API es esencial para gestionar mejoras sin afectar a los usuarios actuales. Al utilizar OpenAPI, puedes incorporar fácilmente versiones múltiples, asegurando compatibilidad y nuevas funcionalidades. Este método permite que los usuarios adopten gradualmente cambios sin interrumpir su uso actual.

¿Qué significa versionar tu API?

El versionado consiste en mantener distintas versiones de tu API con mejoras o cambios en cada iteración, sin perder soporte para las versiones previas. La importancia del versionado radica en prevenir inconvenientes que puedan surgir debido a incompatibilidades entre versiones, asegurando así una transición suave para usuarios nuevos y existentes.

¿Por qué es necesario separar la lógica por versiones?

Cada versión de la API puede ofrecer mejoras o modificaciones que podrían afectar directamente la implementación de los usuarios finales.

  • Algunos usuarios prefieren mantenerse en versiones anteriores hasta estar preparados para una actualización.
  • Cambios en tipos de datos (de texto a numérico, por ejemplo) pueden causar conflictos evidentes en aplicaciones.
  • Separar claramente cada versión minimiza riesgos y facilita la adaptación a los usuarios.

¿Cómo configurar múltiples versiones con OpenAPI?

Para manejar el versionado con OpenAPI, ajusta tu archivo definiendo múltiples servidores para cada versión. Identifica la sección correspondiente y añade claramente cada versión:

servers:
  - url: /v1
    description: Versión uno de la API
  - url: /v2
    description: Versión dos de la API con mejoras incorporadas

¿Qué hacer en tu archivo index.js para soportar varias versiones?

Luego, en tu archivo de implementación, añade rutas independientes para cada versión asegurando así que cada versión responda adecuadamente a las solicitudes:

// Versión 1
app.get('/v1', (req, res) => {
  res.send({ message: "Hello" });
});

// Versión 2 con timestamp
app.get('/v2', (req, res) => {
  res.send({ message: "Hello", timestamp: new Date().toISOString() });
});

Con este enfoque, puedes fácilmente integrar mejoras sin riesgo de romper implementaciones previas.

¿Cómo validar y testear las diferencias entre versiones?

Usa herramientas de desarrollo como consola y documentación API integrada para verificar claramente el comportamiento de cada versión:

  • Utiliza console.log para verificar en consola qué versiones están activas.
  • Usa documentación interactiva (como Swagger) para cambiar entre URLs (v1 y v2) y observar resultados diferentes.

Cada versión muestra claramente cuál endpoint estás utilizando y qué datos devuelve, facilitando el testeo y la implementación por parte de usuarios y desarrolladores.

Comparte en comentarios qué estrategias adicionales utilizas para gestionar versiones en tus APIs, e intercambia experiencias útiles con la comunidad.