Control de versiones de la API de Looker

La mayoría de las aplicaciones se escriben con alguna forma de SDK cliente o, posiblemente, con una URL de API. El SDK cliente y las URLs de la API están vinculadas a una versión específica de la API de Looker. Tu aplicación seguirá funcionando incluso cuando Looker realice cambios en las nuevas versiones de la API. Tu aplicación no se verá afectada por los cambios en otras versiones de la API hasta que decidas actualizar el SDK cliente (o modificar la URL de la API) para usar la nueva versión de la API de Looker.

Cómo Looker realiza cambios en la API

La API de Looker está diseñada para proporcionar estabilidad en los extremos de la API de Looker y, por lo tanto, en tus aplicaciones.

A medida que agregamos más funciones y capacidades a Looker, también actualizamos la API de REST de Looker para acceder a esas funciones nuevas o administrarlas. Para cada versión de Looker, agregamos nuevas funciones, parámetros y propiedades de tipo de respuesta de la API a la versión actual de la API de Looker. En la mayoría de los casos, las adiciones a la API no son cambios rotundos, por lo que podemos conservar la versión existente de la API sin afectar ningún código de la aplicación existente compilado en la API. Es posible que el código de tu aplicación existente simplemente no reconozca las funciones, los parámetros o los atributos nuevos que aparecerán en las versiones posteriores de Looker.

Para los cambios en la API que rompen el código de la aplicación existente, agrupamos esos cambios rotundos en una nueva versión de la API. Esto significa que la versión anterior de la API seguirá funcionando igual que antes, mientras que la versión nueva de la API se ejecutará a su lado con los cambios y las actualizaciones. Puede haber varias versiones de la API en paralelo en una sola instancia de Looker para que puedas elegir cuándo actualizar a la nueva versión de la API. El código existente que se compiló para llamar al extremo anterior seguirá llamando al extremo anterior. El código nuevo debe llamar a la nueva versión del extremo en el nivel de versión de API más reciente.

Una excepción a esto son los problemas de seguridad críticos. Si descubrimos un problema de seguridad crítico relacionado con una parte de la API en particular, haremos lo necesario para mitigar ese problema de seguridad lo antes posible, lo que puede incluir inhabilitar la funcionalidad vulnerable hasta que haya una solución adecuada disponible.

Si necesitamos retirar una función, una función o una propiedad para dar paso a una mejor implementación o solución, por lo general, dejamos la API actual tal como está, pero marcamos los extremos de la API asociados como "obsoletos" para indicar que debe dejar de usar el extremo en el código de su aplicación.

Cambios rotundos y adicionales en la API

Un cambio rotundo es aquel que borra un artefacto existente de un extremo de API o le cambia el nombre. Puede incluir lo siguiente:

  • Cambiar o borrar el nombre o el tipo de un parámetro
  • Cómo agregar un nuevo parámetro obligatorio
  • Cambiar la URL base
  • Cambiar o borrar una propiedad existente en una respuesta

Por otro lado, se puede realizar un cambio aditivo en los extremos estables. Pueden incluir:

  • Parámetros nuevos y opcionales
  • Propiedades nuevas en las respuestas (no consideramos que esto falle porque suponemos que tu código ignorará las propiedades desconocidas en las respuestas, lo cual es una práctica común en la comunidad de la API de REST)

Si un extremo estable de la API de Looker necesita un cambio significativo para avanzar con una nueva arquitectura o funcionalidad, por lo general, el cambio se agrega a un extremo nuevo y se agrupa en una nueva versión de la API para que el extremo de API existente no se modifique.

Marcas para los extremos de la API

La mayoría de los extremos de la API se consideran estables, lo que significa que no se espera que cambien. Looker no lanzará cambios rotundos en extremos estables, excepto en casos extremos, como para solucionar problemas de seguridad.

Otros extremos de la API pueden marcarse como beta o obsoletos:

  • Los extremos beta están en desarrollo activo y pueden cambiar en el futuro. No están protegidas contra cambios rotundos. Cuando uses extremos beta, considera si un cambio en la API de Looker sería particularmente disruptivo para tu app o el ciclo de desarrollo. Lee las notas de la versión de Looker si planeas usar un extremo beta para estar al tanto de los cambios.
  • Los extremos obsoletos son extremos que aún son compatibles y que se pueden usar en este momento, pero que se borrarán en una versión futura. El código antiguo que usa un extremo obsoleto se debe actualizar para dejar de usar ese extremo. Cuando una versión futura de Looker quite la compatibilidad con ese extremo, cualquier código que aún lo use se dañará. En la mayoría de los casos, un extremo obsoleto se reemplazará por una funcionalidad mejorada. Si descubres que tu aplicación usa una función o propiedad que dejó de estar disponible, te recomendamos refactorizar tu código para reemplazar el elemento obsoleto lo antes posible.

Los extremos beta y obsoletos se marcan como tales en el Explorador de API y en la Referencia de la API 4.0. Los extremos que no están marcados se consideran estables.

Migra a una nueva versión de la API

Cuando eliges actualizar el SDK cliente o la URL de la API a una nueva versión de la API, deberás revisar el código de la aplicación para ver si dependes de algo que haya cambiado con la nueva versión de la API. Asegúrate de hacer lo siguiente:

  1. Busca el código de tu aplicación para la función, el valor y los nombres de las propiedades actualizados.
  2. Verifica que el código de la aplicación admita cualquier cambio de tipos (como de número entero a string).
  3. Audita tu código (consulta la siguiente sección).

Audita tu código

Para algunos lenguajes, los cambios rotundos en la API se pueden descubrir en el tiempo de compilación como errores de compilación:

  • Si tu aplicación está escrita en un lenguaje compilado y de tipado fuerte, los cambios estructurales en los parámetros o los tipos de respuesta en una nueva versión de API que no coincidan con tu código existente deberían verse con facilidad gracias a la comprobación de tipo y los mensajes de error del compilador.
  • Si tu aplicación está escrita en un lenguaje dinámico de tipo flexible (como JavaScript, Ruby y Python), puede ser más difícil ubicar las partes de tu aplicación que se verán afectadas por los cambios rotundos en una nueva versión de API. Estos tipos de lenguajes pueden requerir pruebas de unidades de tiempo de ejecución para encontrar problemas relacionados con los cambios en los tipos.

En todos los casos, la práctica recomendada es realizar pruebas de unidades que evalúen el código de tu aplicación, incluidas las llamadas a la API de Looker (no las llamadas simuladas).