Cloud Endpoints Frameworks proporciona características de administración de API que se asimilan a las características que proporciona el proxy de servicio extensible (ESP) a Cloud Endpoints. Endpoints Frameworks incluye una puerta de enlace de API integrada que intercepta todas las solicitudes y realiza las verificaciones necesarias (por ejemplo, la autenticación) antes de reenviar la solicitud al backend de la API. Tras la respuesta desde el backend, se informa y recopila la telemetría en Endpoints Frameworks. Puedes ver las métricas de tus APIs en la página Endpoints > Services en la consola de Google Cloud.
Las características de administración de API disponibles en Endpoints Frameworks incluyen lo siguiente:
Para que Endpoints administre tu API, debes implementar un documento de OpenAPI en el que se describa que tu API utiliza la versión 2.0 de OpenAPI Specification. En esta página, se describe cómo generar y, luego, implementar un documento de OpenAPI con el que se habilita Endpoints para administrar tu API.
Si no agregas la administración de API, tu API seguirá entregando solicitudes, pero no aparecerá en la página Endpoints > Servicios de la consola de Google Cloud, y la funcionalidad que proporciona Endpoints, como el registro, la supervisión y la configuración de cuotas, no estará disponible.
Instala y configura el software obligatorio
Si aún no lo has hecho, instala y configura Google Cloud CLI para Python. Luego, agrega la biblioteca de Python de Endpoints Frameworks al directorio del proyecto de la API para que se suba con el código de la API al momento de la implementación.
Instala y configura gcloud CLI para Python
Instala e inicializa gcloud CLI:
Instala el componente
gcloud
que incluye la extensión de App Engine para Python:gcloud components install app-engine-python
Actualiza la CLI de gcloud:
gcloud components update
Asegúrate de que gcloud CLI esté autorizada para acceder a tus datos y servicios en Google Cloud:
gcloud auth login
Se abrirá una pestaña nueva del navegador y se te solicitará que elijas una cuenta.
Configura el proyecto predeterminado con tu ID del proyecto. Reemplaza
YOUR_PROJECT_ID
por tu ID del proyecto de Google Cloud.gcloud config set project YOUR_PROJECT_ID
Para Linux, debes establecer la variable de entorno
ENDPOINTS_GAE_SDK
como la ruta de acceso de la carpeta del SDK de App Engine con el siguiente comando:PATH_TO_CLOUD_SDK/platform/google_appengine
Reemplaza
PATH_TO_CLOUD_SDK
por el resultado del siguiente comando:gcloud info --format="value(installation.sdk_root)"
Agrega la biblioteca de Python de Endpoints Frameworks
Asegúrate de que puedas compilar extensiones C para Python.
Windows: se requiere Microsoft Visual C++ 9.0 o una versión superior. Puedes descargar el compilador de Microsoft Visual C++ para Python 2.7 desde el Centro de descargas de Microsoft
Para otros sistemas operativos: según tu sistema operativo, es posible que necesites instalar herramientas del compilador (a veces, en un paquete llamado
build-essential
) o encabezados de desarrollo de Python (a veces, en un paquete llamadopython-dev
).
Cambia el directorio por el directorio principal de la API.
Crea un subdirectorio
/lib
en el directorio principal de la API:mkdir lib
Instala la biblioteca con el siguiente comando:
pip install -t lib google-endpoints --ignore-installed
Genera el documento de OpenAPI
En el directorio principal de la API, genera un documento OpenAPI con las herramientas del marco de trabajo. Por ejemplo:
Clase individual
En el siguiente comando, reemplaza YOUR_PROJECT_ID
por tu ID del proyecto de Google Cloud.
python lib/endpoints/endpointscfg.py get_openapi_spec main.EchoApi \ --hostname YOUR_PROJECT_ID.appspot.com
Ignora las advertencias que aparecen.
Varias clases
Puedes enumerar varias clases en la línea de comandos. Endpoints genera un documento de OpenAPI para cada combinación de nombre/versión de API.
Si quieres implementar varias clases de API con diferentes nombres de API como parte de un solo servicio, también debes agregar la marca --x-google-api-name
.
La habilitación de esta marca agrega restricciones adicionales a los nombres de la API. En concreto, los nombres deben coincidir con la expresión regular [a-z][a-z0-9]{0,39}
; es decir, el nombre debe tener 1 y 40 caracteres, que pueden ser caracteres alfabéticos en minúsculas o números, con la excepción de que el primer carácter no debe ser un número. Por ejemplo:
En el siguiente comando, reemplaza YOUR_PROJECT_ID
por tu ID del proyecto de Google Cloud.
python lib/endpoints/endpointscfg.py get_openapi_spec main.FooApi main.BarApi \ --hostname YOUR_PROJECT_ID.appspot.com \ --x-google-api-name
Ignora las advertencias que aparecen.
En Endpoints, se usa el texto que especificas en el argumento hostname
como el nombre del servicio. Cuando implementas la API en App Engine, se crea una entrada DNS con un nombre con el formato de forma automática YOUR_PROJECT_ID.appspot.com
.
Implementa el documento de OpenAPI
Clase individual
gcloud endpoints services deploy echov1openapi.json
Varias clases
Si tienes varios documentos de OpenAPI, enuméralos en la línea de comandos. Por ejemplo:
gcloud endpoints services deploy foov1openapi.json barv1openapi.json
La primera vez que implementas uno o varios documentos de OpenAPI, se crea un servicio de Endpoints nuevo con el nombre YOUR_PROJECT_ID.appspot.com
.
Una vez completado de forma correcta, una línea similar a la siguiente muestra el ID de configuración del servicio y el nombre del servicio:
Service Configuration 2017-02-13r0 uploaded for service example-project-12345.appspot.com
En el ejemplo anterior, 2017-02-13r0
es el ID de configuración del servicio. El ID de configuración de servicio consiste en una marca de fecha seguida de un número de revisión. Si implementas tu documento de OpenAPI otra vez, el número de revisión se incrementa en el ID de configuración del servicio.
Si necesitas volver a mostrar el ID de configuración del servicio, ejecuta el siguiente comando, pero reemplaza YOUR_PROJECT_ID
por el ID de tu proyecto de Google Cloud de la siguiente manera:
gcloud endpoints configs list --service=YOUR_PROJECT_ID.appspot.com
Puedes crear tu propio documento de OpenAPI y, luego, implementarlo, en lugar de usar uno generado. Solo debes reemplazar echov1openapi.json
ya mencionado con la ruta a tu documento de OpenAPI. Para obtener más información sobre cómo escribir un documento de OpenAPI, consulta Descripción general de OpenAPI.
Vuelve a implementar la API y realiza una prueba
Edita el archivo de tu proyecto
app.yaml
y agrega una secciónenv_variables
de la siguiente manera:env_variables: ENDPOINTS_SERVICE_NAME: YOUR_PROJECT_ID.appspot.com ENDPOINTS_SERVICE_VERSION: YOUR_SERVICE_VERSION
Reemplaza
YOUR_PROJECT_ID
por tu ID del proyecto de Google Cloud yYOUR_SERVICE_VERSION
por el ID de configuración de tu servicio de la sección anterior. Con esta adición al archivoapp.yaml
, en Endpoints, se administra tu API después de volver a implementar tu aplicación.Implementa tu aplicación de nuevo:
gcloud app deploy
Espera unos instantes para que la implementación se realice de manera correcta; ignora los mensajes de advertencia. Cuando finaliza la implementación, aparece un mensaje similar al siguiente:
File upload done. Updating service [default]...done.
Prueba que la implementación se haya realizado de manera correcta; por ejemplo, con curl:
curl --request POST \ --header "Content-Type: application/json" \ --data '{"content":"echo"}' \ https://YOUR_PROJECT_ID.appspot.com/_ah/api/echo/v1/echo?n=2
Reemplaza
echo
por el nombre de tu API.Los resultados deberían mostrar algo similar a lo siguiente:
{ "content": "echo echo" }
Haz algunas solicitudes adicionales a tu API.
Para ver las métricas de tus APIs, abre la página Endpoints > Servicios en la consola de Google Cloud de tu proyecto: