Migrar a la versión 2.0 de Cloud Endpoints Frameworks

Cloud Endpoints Frameworks se llamaba anteriormente Endpoints. Para distinguir entre las dos versiones, en esta página se hace referencia a la nueva versión como Endpoints Frameworks 2.0 y a la versión anterior como Endpoints 1.0. En esta página se describe cómo migrar una aplicación de Cloud Endpoints versión 1.0 a Endpoints Frameworks versión 2.0. La migración consiste en cambiar una biblioteca y la configuración de la aplicación, pero no tienes que modificar el código.

Ventajas

La versión 2.0 de Endpoints ofrece varias ventajas, entre las que se incluyen las siguientes:

  • Se ha reducido la latencia de las solicitudes.
  • Mejor integración con las funciones de App Engine, como los dominios personalizados.
  • Nuevas funciones de gestión de APIs.

La versión 2.0 de Endpoints Frameworks no afecta a las interfaces de tu API. Los clientes actuales seguirán funcionando después de la migración sin necesidad de cambiar el código del lado del cliente.

Información general sobre la función

Las siguientes funciones son retrocompatibles con la versión 1.0 de Endpoints:

  • Protocolo JSON-REST, que usan todas las bibliotecas de cliente de Google
  • Servicio de descubrimiento
  • Todas las funciones de autenticación (OAuth2/OpenID Connect)
  • Compatibilidad con bibliotecas de cliente para clientes generados
  • CORS (para las llamadas de JavaScript que no usan la biblioteca cliente de JavaScript de Google)
  • Explorador de APIs

La división del tráfico no está disponible.

Funciones excluidas actualmente

Las siguientes funciones no están disponibles. Si necesita alguna de estas funciones, envíe una solicitud de función.

  • Protocolo JSON-RPC, que es obligatorio para los clientes de iOS antiguos. Para crear clientes de iOS para tu API de Endpoints Frameworks versión 2.0, te recomendamos que uses la biblioteca de cliente de APIs de Google para Objective-C para APIs REST.
  • ETags automáticas
  • Campos kind automáticos
  • Integración en IDE
  • fields respuestas parciales
  • Creación automática de métodos de API PATCH

Migrar de la versión 1.0 de Endpoints

Para migrar desde la versión 1.0, sigue estos pasos:

  1. Crea una subcarpeta llamada /lib en el directorio principal de tu aplicación.

  2. Instala la biblioteca desde el directorio principal de tu aplicación:

     pip install -t lib google-endpoints --ignore-installed
    
  3. Quita las entradas - name: endpoints y version 1.0 del archivo app.yaml de tu aplicación en la sección libraries. Por ejemplo:

    libraries:
    - name: endpoints   #Remove
      version: 1.0      #Remove
    
  4. En la sección libraries del archivo app.yaml, añade lo siguiente:

    libraries:
    - name: pycrypto
      version: 2.6
    - name: ssl
      version: 2.7.11
    

    Endpoints Frameworks requiere estas versiones de las bibliotecas pycrypto y ssl.

  5. En la sección handlers del archivo app.yaml, cambia la directiva url de - url: /_ah/spi/.* a - url: /_ah/api/.*.

  6. En el directorio raíz de tu aplicación, crea o modifica un archivo llamado appengine_config.py para incluir lo siguiente:

    from google.appengine.ext import vendor
    
    vendor.add('lib')
    
  7. Comprueba la cadena de versión de la API. La cadena de versión, especificada en el decorador @endpoints.api(version='v1', ...), aparece en la ruta de la API. Si especificas una cadena de versión compatible con el estándar SemVer, solo aparecerá el número de versión principal en la ruta de tu API cuando la implementes. Por ejemplo, una API llamada echo con la versión 2.1.0 tendría una ruta como /echo/v2. Si actualizas la API echo a la versión 2.2.0 y despliegas un cambio retrocompatible, la ruta sigue siendo /echo/v2. Esto te permite actualizar el número de versión de la API cuando hagas un cambio compatible con versiones anteriores sin que se interrumpan las rutas de tus clientes. Sin embargo, si actualizas la API echo a la versión 3.0.0 (porque vas a implementar un cambio incompatible), la ruta se cambiará a /echo/v3.

  8. Vuelve a implementar tu aplicación Endpoints Frameworks.

Verificar una nueva implementación

Para verificar que el nuevo framework está sirviendo tráfico, siga estos pasos:

  1. Envía algunas solicitudes al nuevo despliegue.
  2. Visita la página de Cloud Logging de tu proyecto.

    Ir a la página Explorador de registros

  3. Si las solicitudes se muestran con rutas que empiezan por /_ah/api, significa que la versión 2.0 de Endpoints Frameworks está sirviendo tu API. Los registros no deberían mostrar ninguna solicitud con rutas que empiecen por /_ah/spi. Estas solicitudes indican que el proxy de Endpoints versión 1.0 sigue atendiendo solicitudes.

Añadir gestión de APIs

La versión 2.0 de Endpoints Frameworks añade funciones de gestión de APIs, como las siguientes:

  • Gestión de claves de API
  • Compartir APIs
  • Autenticación de usuarios
  • Métricas de APIs
  • Registros de la API

Para empezar, ve a la página Primeros pasos con Endpoints Frameworks para Python.

Solución de problemas

En esta sección se describen los comportamientos erráticos habituales que se producen al migrar a Endpoints Frameworks 2.0 y las soluciones sugeridas.

La API devuelve errores 404, pero el Explorador de APIs sigue mostrando las APIs correctamente

Debes eliminar la configuración de la versión 1.0 de Endpoints al migrar a la versión 2.0 de Endpoints Frameworks. Si la configuración antigua sigue presente en la configuración de la aplicación, el servicio Endpoints seguirá tratando la aplicación como una aplicación de la versión 1.0. Es posible que veas solicitudes en los registros de App Engine enviadas a /_ah/spi, lo que dará lugar a errores HTTP 404 enviados al cliente.

  1. Si están presentes, elimine las siguientes líneas del archivo app.yaml:

    handlers:
    - url: /_ah/spi/.*
      script: ...
    
  2. Comprueba que la sección handlers de tu archivo app.yaml tenga la ruta correcta:

    handlers:
    # The endpoints handler must be mapped to /_ah/api.
    - url: /_ah/api/.*
      script: ...
    

Mensaje de error: ImportError: cannot import name locked_file

Esto ocurre si tus dependencias contienen una versión de la biblioteca oauth2client que no es compatible con App Engine. Consulta el problema conocido.