Agrega la administración de la 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. Cuando el backend responde, Endpoints Frameworks informa y recopila la telemetría. Puedes ver las métricas de tus API en la página Endpoints > Servicios en Google Cloud Console.

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 usa 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 continúa entregando solicitudes, pero no aparece en la página Endpoints  > Servicios de Cloud Console y la funcionalidad que ofrece Endpoints, como el registro, la supervisión y la configuración de cuotas, no está disponible.

Instala y configura el software obligatorio

Si aún no lo has hecho, instala y configura SDK de Cloud 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 el SDK de Cloud para Python

  1. Instala y también inicializa el SDK de Cloud:

    Descarga y, luego, instala el SDK de Cloud.

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

    gcloud components install app-engine-python
        
  3. Actualiza el SDK de Cloud:

    gcloud components update
        
  4. Asegúrate de que en el SDK de Cloud se disponga de la autorización para acceder a tus datos y servicios en Google Cloud de la siguiente manera:

    gcloud auth login
        

    Se abrirá una nueva pestaña 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 Cloud.

        gcloud config set project YOUR_PROJECT_ID
        
  6. Para Linux, configura la variable de entorno ENDPOINTS_GAE_SDK como la ruta de la carpeta del SDK de App Engine:

        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 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. Habilitar 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 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 YOUR_PROJECT_ID.appspot.com de forma automática.

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 implementar el ID de configuración del servicio otra vez, ejecuta el siguiente comando, pero reemplaza YOUR_PROJECT_ID por tu ID del proyecto de Cloud:

    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 por 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 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, 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 se completa 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. Si deseas ver las métricas de tus API, abre la página Endpoints > Servicios en Cloud Console para tu proyecto de la siguiente manera:

    Ir a la página de servicios de Endpoints