Agrega administración de API

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 tu API en la página Endpoints > Servicios de 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, y agrega 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 en el momento de la implementación.

Instala y configura gcloud CLI para Python

  1. Instala e inicializa gcloud CLI:

    Descarga e instala gcloud CLI

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

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

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

  5. 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
    
  6. 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

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

  2. Cambia el directorio por el directorio principal de la API.

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

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

  1. Edita el archivo de tu proyecto app.yaml y agrega 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
    

    Reemplaza YOUR_PROJECT_ID por tu ID del proyecto de Google Cloud y YOUR_SERVICE_VERSION por el ID de configuración de tu servicio de la sección anterior. Con esta adición al archivo app.yaml, en Endpoints, se administra tu API después de volver a implementar tu aplicación.

  2. Implementa tu aplicación de nuevo:

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

  6. Para ver las métricas de la API, abre la página Extremos > Servicios en la consola de Google Cloud de tu proyecto:

    Ir a la página Servicios de Endpoints