Añadir gestión de APIs

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

  1. Instala e inicializa gcloud CLI:

    Descargar e instalar la CLI de gcloud

  2. Instala el componente gcloud, que incluye la extensión App Engine para Python:

    gcloud components install app-engine-python
    
  3. Actualiza gcloud CLI:

    gcloud components update
    
  4. 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.

  5. Define el ID de tu proyecto como proyecto predeterminado. Sustituye YOUR_PROJECT_ID por el ID de tu proyecto. Google Cloud

    gcloud config set project YOUR_PROJECT_ID
    
  6. 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

  1. 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 llamado python-dev).

  2. Cambia al directorio principal de tu API.

  3. Crea un subdirectorio /lib en el directorio principal de la API:

    mkdir lib
    
  4. 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

  1. Edita el archivo app.yaml de tu proyecto y añade una sección env_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 y YOUR_SERVICE_VERSION por el ID de configuración de servicio de la sección anterior. Con esta adición al archivo app.yaml, Endpoints gestiona tu API después de que vuelvas a implementar tu aplicación.

  2. Vuelve a implementar tu aplicación:

    gcloud app deploy
    
  3. 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.
    
  4. 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"
    }
    
  5. Realiza algunas solicitudes adicionales a tu API.

  6. Para ver tus métricas de API, abre la página Endpoints > Services en la Google Cloud consola de tu proyecto
    :

    Ir a la página Servicios de Endpoints