Acerca de API Gateway
Actualmente, los servicios basados en la Web ofrecen una gran variedad de funciones, desde servicios de mapas, clima e imágenes hasta juegos, subastas y muchos otros tipos de servicios. Los proveedores de servicios tienen muchas opciones sobre cómo implementar y administrar sus servicios. Por ejemplo, un servicio puede 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 puede tener servicios heredados implementados mediante una arquitectura, y servicios nuevos implementados mediante una arquitectura completamente diferente.
Independientemente de la implementación, todos los servicios basados en la Web requieren una forma de hacer que estén disponibles para 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 mostrar datos, con formato XML o JSON, a la app cliente.
Acerca de los servicios de Google Cloud Platform
Cuando desarrollas tus servicios en Google Cloud Platform (GCP), tienes muchas opciones para implementarlos, como funciones de Cloud Run, Cloud Run y el entorno estándar de App Engine. La flexibilidad de GCP te permite elegir la arquitectura de backend correcta para los requisitos de tu servicio.
Los desarrolladores de apps son clientes de los servicios de backend. Los desarrolladores de apps consumen tus servicios con el objetivo de implementar apps para dispositivos móviles o tablets, a través de apps que se ejecutan en un navegador o a través de cualquier otro tipo de app que pueda realizar una solicitud de servicio.
Exponer servicios públicamente en la Web puede ser todo un desafío. Para tener éxito, un proveedor de servicios debe cumplir con los siguientes requisitos:
- 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 interfaces y protocolos diferentes, el acceso a estos servicios 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 en busca de 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 Platform (GCP)
En la siguiente imagen, se muestra a desarrolladores de apps realizando solicitudes a tus servicios de backend 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 moverlo de una arquitectura a otra sin tener que cambiar la API. Siempre que la API de tu servicio se mantenga coherente, los desarrolladores de apps no tendrán que modificar las apps implementadas debido a 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 en GCP 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 facilita que una aplicación consuma las funciones o los datos de otra aplicación. Mediante la definición de puntos de entrada estables, simples y bien documentados, las API permiten a los desarrolladores acceder con facilidad 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 ISBN del libro, es decir, el ID. |
Datos de respuesta | { "title" : "book_title", "author" : "author_name", "published" : "publish_date" } |
Un objeto JSON que contiene detalles de libros. |
Código de respuesta | 200 | La solicitud se realizó correctamente. |
Con esta información, puedes realizar la siguiente solicitud cURL a esta API para obtener información sobre un libro:
curl -X GET https://www.mybooksapi.com/books/info?isbn=0385504217
Debido a que este servicio tiene una API bien definida, incluida 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.
Debido a 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 Book podría actualizarse para agregar parámetros de consulta adicionales, como title
o author
, o cambiar el JSON de respuesta para agregar información adicional sobre el libro.
Define 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 cualquier dato que se pase en una solicitud a la API
- El formato de cualquier dato que muestre el servicio en la respuesta de la API
- El 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 GCP:
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:
Después de implementar la configuración de la API, tus clientes pueden realizar llamadas REST a la API.
Administra una API
Una vez implementada y en ejecución, puedes 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 rastrea la latencia, el tráfico y los errores.
Con el tiempo, es posible que desees actualizar una API implementada para agregar nuevas funciones, mejorar el rendimiento o corregir problemas con la API. Para actualizar una API implementada, simplemente 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. Actualmente, API Gateway admite el mismo mecanismo de autenticación y sintaxis que usa Cloud Endpoints, incluido el uso de:
También puedes usar Google Cloud Platform Console si quieres 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 la Guía de autenticación de GCP.