Cloud Endpoints Frameworks ofrece funciones de gestión de APIs comparables a las que proporciona el proxy de servicios extensible (ESP) para Cloud Endpoints. Endpoints Frameworks incluye una pasarela de API integrada que intercepta todas las solicitudes y realiza las comprobaciones necesarias, como la autenticación, antes de reenviar la solicitud al backend de la API. Cuando el backend responde, Endpoints Frameworks recoge y registra la telemetría. Puedes ver las métricas de tu API en la página Endpoints > Services (Endpoints > Servicios) de laGoogle Cloud consola.
Las funciones de gestión de APIs disponibles en Endpoints Frameworks incluyen las siguientes:
Para que Endpoints gestione tu API, debes desplegar un documento de OpenAPI que describa tu API con la versión 2.0 de la especificación de OpenAPI. En esta página se describe cómo generar e implementar un documento de OpenAPI que permita a Endpoints gestionar tu API.
Si no añades la gestión de APIs, tu API seguirá respondiendo a las solicitudes, pero no aparecerá en la página Endpoints > Services de la consolaGoogle Cloud , y no podrás usar las funciones que ofrece Endpoints, como el registro, la monitorización y la configuración de cuotas.
Instalar y configurar el software necesario
Si aún no lo has hecho, instala y configura la CLI de Google Cloud para Python, y añade la biblioteca de Python de Endpoints Frameworks al directorio de tu proyecto de API para que se suba con el código de la API al desplegarla.
Instalar y configurar gcloud CLI para Python
Instala e inicializa gcloud CLI:
Instala el componente
gcloud
, que incluye la extensión App Engine para Python:gcloud components install app-engine-python
Actualiza gcloud CLI:
gcloud components update
Asegúrate de que la CLI de gcloud tenga autorización para acceder a tus datos y servicios en Google Cloud:
gcloud auth login
Se abre una nueva pestaña del navegador y se te pide que elijas una cuenta.
Define el ID de tu proyecto como proyecto predeterminado. Sustituye
YOUR_PROJECT_ID
por el ID de tu proyecto. Google Cloudgcloud config set project YOUR_PROJECT_ID
En Linux, define la variable de entorno
ENDPOINTS_GAE_SDK
con la ruta de la carpeta del SDK de App Engine:PATH_TO_CLOUD_SDK/platform/google_appengine
Sustituye
PATH_TO_CLOUD_SDK
por el resultado del siguiente comando:gcloud info --format="value(installation.sdk_root)"
Añadir la biblioteca de Python de Endpoints Frameworks
Asegúrate de que puedes compilar extensiones de C para Python.
Windows: se requiere Microsoft Visual C++ 9.0 o una versión posterior. Puedes descargar el compilador Microsoft Visual C++ para Python 2.7 desde el centro de descargas de Microsoft.
Otros sistemas operativos: en función de tu sistema operativo, es posible que tengas que instalar herramientas de compilación (a veces en un paquete llamado
build-essential
) o los encabezados de desarrollo de Python (a veces en un paquete llamadopython-dev
).
Cambia al directorio principal de tu API.
Crea un subdirectorio
/lib
en el directorio principal de la API:mkdir lib
Instala la biblioteca:
pip install -t lib google-endpoints --ignore-installed
Generar el documento de OpenAPI
En el directorio principal de la API, genera un documento de OpenAPI con las herramientas del framework. Por ejemplo:
Clase única
En el siguiente comando, sustituye YOUR_PROJECT_ID
por el ID de tu proyecto Google Cloud .
python lib/endpoints/endpointscfg.py get_openapi_spec main.EchoApi \ --hostname YOUR_PROJECT_ID.appspot.com
Ignora las advertencias que se muestran.
Varias clases
Puedes enumerar varias clases en la línea de comandos. Endpoints genera un documento OpenAPI para cada combinación de nombre y versión de la API.
Si quieres desplegar varias clases de API con nombres de API diferentes como parte de un mismo servicio, también debes añadir la marca --x-google-api-name
.
Si habilitas esta marca, se añadirán restricciones adicionales a los nombres de tus APIs. En concreto, los nombres deben coincidir con la expresión regular [a-z][a-z0-9]{0,39}
. Es decir, el nombre debe constar de entre 1 y 40 caracteres, que pueden ser letras minúsculas o números, excepto el primer carácter, que no puede ser un número. Por ejemplo:
En el siguiente comando, sustituye YOUR_PROJECT_ID
por el ID de tu proyecto 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 se muestran.
Endpoints usa el texto que especifiques en el argumento hostname
como nombre del servicio. Cuando despliegues la API en App Engine, se creará automáticamente una entrada DNS con un nombre en el formato YOUR_PROJECT_ID.appspot.com
.
Desplegar el documento OpenAPI
Clase única
gcloud endpoints services deploy echov1openapi.json
Varias clases
Si tienes varios documentos de OpenAPI, enuméralos todos en la línea de comandos. Por ejemplo:
gcloud endpoints services deploy foov1openapi.json barv1openapi.json
La primera vez que despliegues tu documento (o documentos) de OpenAPI, se creará un servicio de Endpoints con el nombre YOUR_PROJECT_ID.appspot.com
.
Si se completa correctamente, se mostrará una línea similar a la siguiente con 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 del servicio consta de una marca de fecha seguida de un número de revisión. Si vuelve a implementar su documento de OpenAPI, el número de revisión se incrementará 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 sustituye YOUR_PROJECT_ID
por el ID del proyecto Google Cloud :
gcloud endpoints configs list --service=YOUR_PROJECT_ID.appspot.com
Puedes crear tu propio documento OpenAPI e implementarlo en lugar de usar uno generado. Solo tienes que sustituir echov1openapi.json
por la ruta a tu documento de OpenAPI. Para obtener más información sobre cómo escribir un documento de OpenAPI, consulta la información general sobre OpenAPI.
Vuelve a desplegar la API y haz pruebas
Edita el archivo
app.yaml
de tu proyecto y añade una secciónenv_variables
de la siguiente manera:env_variables: ENDPOINTS_SERVICE_NAME: YOUR_PROJECT_ID.appspot.com ENDPOINTS_SERVICE_VERSION: YOUR_SERVICE_VERSION
Sustituye
YOUR_PROJECT_ID
por el ID de tu proyectoGoogle Cloud yYOUR_SERVICE_VERSION
por el ID de configuración de servicio de la sección anterior. Con esta adición al archivoapp.yaml
, Endpoints gestiona tu API después de que vuelvas a implementar tu aplicación.Vuelve a implementar tu aplicación:
gcloud app deploy
Espera unos instantes a que la implementación se complete correctamente. Ignora los mensajes de advertencia. Cuando se complete la implementación, se mostrará un mensaje similar al siguiente:
File upload done. Updating service [default]...done.
Prueba si se ha vuelto a implementar correctamente. Por ejemplo, puedes usar 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
Sustituye
echo
por el nombre de tu API.Los resultados deberían ser similares a los siguientes:
{ "content": "echo echo" }
Realiza algunas solicitudes adicionales a tu API.
Para ver tus métricas de API, abre la página Endpoints > Services en la Google Cloud consola de tu proyecto
: