Acerca de API Gateway

Actualmente, los servicios basados en la Web proporcionan una gran variedad de funciones, lo que significa que abarcan desde servicios de mapas, clima e imágenes hasta juegos, subastas y muchos otros tipos de servicios. Los proveedores de servicios tienen muchas opciones para implementar, implementar y administrar sus servicios. Por ejemplo, un servicio podría desarrollarse en Java o .NET, mientras que otro usa Node.js.

Las implementaciones de backend también pueden variar para un solo proveedor de servicios. Un proveedor de servicios podría tener servicios heredados implementados con una arquitectura y servicios nuevos implementados con una arquitectura completamente diferente.

Independientemente de la implementación, todos los servicios basados en la Web requieren una forma de poner los servicios a disposición de los desarrolladores de apps. A menudo, estos servicios se exponen como un conjunto de extremos HTTP. Según el servicio, el extremo también puede devolver datos con formato XML o JSON a la app cliente.

Acerca de los servicios de Google Cloud

Cuando desarrollas tus servicios en Google Cloud, tienes muchas opciones para implementarlos, como las funciones de Cloud Run, Cloud Run y el entorno estándar de App Engine. La flexibilidad de Google Cloud te permite elegir la arquitectura de backend correcta para los requisitos de tu servicio.

Los desarrolladores de apps son los clientes de los servicios de backend. Los desarrolladores de apps consumen tus servicios para implementar apps para dispositivos móviles o tablets, a través de apps que se ejecutan en un navegador o cualquier otro tipo de app que pueda realizar una solicitud de servicio.

Exponer servicios públicamente a través de la Web puede ser un desafío. Para tener éxito, un proveedor de servicios debe hacer lo siguiente:

  • Autenticar el acceso al servicio
  • Proteger el transporte de datos entre clientes y el servicio
  • Proteger el servicio de ataques maliciosos
  • Escalar el servicio a medida que el uso aumenta o disminuye
  • Proporcionar al equipo de operaciones de backend una forma de supervisar y hacer un seguimiento del uso del servicio
  • Realizar un seguimiento del uso para proporcionar datos de facturación precisos

Además, si tus servicios usan diferentes interfaces y protocolos, acceder a ellos puede ser un desafío para los desarrolladores de apps. Los desarrolladores no solo deben aprender y comprender cada interfaz de servicio, sino que también deben supervisar los diferentes servicios para detectar cambios y, luego, actualizar y volver a implementar las apps según sea necesario.

API Gateway

API Gateway te permite proporcionar acceso seguro a tus servicios mediante una API de REST bien definida que es coherente en todos los servicios, sin importar la implementación del servicio. Una API coherente:

  • Facilita a los desarrolladores de apps el consumo de tus servicios
  • Te permite cambiar la implementación del servicio de backend sin afectar la API pública
  • Te permite aprovechar las funciones de escalamiento, supervisión y seguridad integradas en Google Cloud

En la siguiente imagen, se muestra a desarrolladores de apps realizando solicitudes a tus servicios de backend a través de API Gateway:

Realiza solicitudes de servicio web a través de API Gateway.

Con API Gateway, los desarrolladores de apps consumen las API de REST para implementar apps. Debido a que todas las API se alojan en API Gateway, los desarrolladores de apps ven una interfaz coherente en todos los servicios de backend.

Si implementas tus APIs en API Gateway, puedes actualizar el servicio de backend o incluso trasladarlo de una arquitectura a otra sin tener que cambiar la API. Siempre y cuando la API de tu servicio siga siendo coherente, los desarrolladores de apps no tendrán que modificar las apps implementadas debido a los cambios subyacentes en tu backend.

API Gateway es un sistema distribuido de administración de API que también proporciona hosting, registro, supervisión y otras funciones para ayudarte a crear, compartir, mantener y proteger tus API. API Gateway se integra de forma nativa con Google Cloud y controla todas las tareas relacionadas con el procesamiento simultáneo de llamadas a la API, incluidas la administración del tráfico, la autorización y la supervisión.

¿Qué es una API?

Una API es una interfaz que permite que una aplicación consuma las funciones o los datos de otra aplicación. Mediante la definición de puntos de entrada estables y bien documentados, las APIs permiten a los desarrolladores acceder a la lógica de aplicación que compilaron otros desarrolladores y volver a usarla.

Por ejemplo, en la siguiente tabla se describe un ejemplo de una API de REST que podría mostrar información sobre un libro:

Propiedad Valor Descripción
URL https://www.mybooksapi.com/books/info Muestra el título, autor y fecha de publicación de un libro según su código internacional estándar de libros (ISBN).
Verbo HTTP GET Realice una solicitud GET a la API
Parámetros de consulta isbn Pasa el número de ISBN del libro, es decir, su ID.
Datos de respuesta
{
  "title" : "book_title",
  "author" : "author_name",
  "published" : "publish_date"
}
Objeto JSON que contiene los detalles del libro.
Código de respuesta 200 La solicitud se realizó correctamente.

A continuación, se proporciona un ejemplo de una solicitud de curl que se podría usar para obtener información sobre un libro con el número ISBN especificado:

curl -X GET https://www.mybooksapi.com/books/info?isbn=0385504217

Debido a que este servicio tiene una API bien definida, que incluye una descripción de los formatos de datos y los códigos de respuesta HTTP, el desarrollador de la app no necesita saber nada sobre la implementación subyacente del servicio de backend.

Ya que las aplicaciones que consumen APIs son sensibles a los cambios, las APIs también implican un contrato entre los proveedores y los consumidores de APIs. El contrato garantiza que, con el tiempo, la API cambiará de manera predecible. Por ejemplo, la API de Books podría actualizarse para agregar parámetros de búsqueda adicionales, como title o author, o cambiar el JSON de respuesta para agregar información adicional sobre el libro.

Cómo definir una API

Defines una API implementada en API Gateway como una especificación de OpenAPI 2.0. Los componentes clave de una definición de API incluyen los siguientes:

  • La URL o el punto de entrada del servicio de backend
  • El formato de los datos que se pasan en una solicitud a la API
  • Formato de datos de los datos que devuelve el servicio en la respuesta de la API
  • Mecanismo de autenticación que se usa para controlar el acceso al servicio

Después de definir tu API, usa la interfaz de línea de comandos de gcloud para subirla a una configuración de API en Google Cloud:

Usa gcloud para subir la especificación de la API a Google Cloud.

Implementa una configuración de API en API Gateway

Para crear tu API, implementa la configuración de la API en API Gateway. Usa el comando gcloud para implementar la configuración de la API:

Usa gcloud para implementar la especificación de OpenAPI.

Después de implementar la configuración de la API, tus clientes pueden realizar llamadas a la API de REST.

Administra una API

Una vez que se implemente y ejecute, podrás supervisar la actividad de la API, como las métricas de uso y los registros. Cuando un cliente realiza una solicitud a tu API, API Gateway registra información sobre la solicitud y la respuesta. API Gateway también realiza un seguimiento de la latencia, el tráfico y los errores.

Con el tiempo, es posible que desees actualizar una API implementada para agregar nuevas capacidades, mejorar el rendimiento o corregir problemas. Para actualizar una API implementada, actualiza la especificación de OpenAPI para la definición de la API y, luego, sube y vuelve a implementar la API.

Controla el acceso a la API

API Gateway te permite configurar tu API para que requiera autenticación antes de que el cliente pueda acceder a la API. API Gateway admite el mismo mecanismo de autenticación y sintaxis que usa Cloud Endpoints, incluido el uso de lo siguiente:

También puedes usar la Google Cloud consola para compartir tu API con otros desarrolladores y que estos puedan habilitarla y generar claves de API para llamarla.

Además de definir un mecanismo de autenticación para verificar la identidad del usuario, tu API también debe decidir qué es lo que el usuario autenticado puede hacer con la API. Para obtener más información, consulta Métodos de autenticación en Google.

¿Qué sigue?