Debes definir un servidor web que use las API que creaste. Los marcos de trabajo de Cloud Endpoints para Python enrutan las solicitudes a tu API hacia los métodos en tu código mediante la implementación de la Interfaz de puerta de enlace del servidor web (WSGI) estándar.
Como ocurre con todas las aplicaciones que se ejecutan en App Engine, debes crear un archivo llamado app.yaml
en el que establezcas la configuración de tu aplicación de App Engine. Para definir el servidor web, realiza los cambios que se describen a continuación a tu archivo app.yaml
.
Para definir un servidor web:
Crea un módulo de Python, por ejemplo,
main.py
, y un objetoendpoints.api_server
en el nivel superior:El código
api = endpoints.api_server([EchoApi])
crea una aplicación WSGI que enruta las solicitudes a la API hacia los métodos de la claseEchoAPI
.Puedes proporcionarle a
endpoints.api_server
una lista de objetosremote.Service
(que definiste cuando creaste tu API ). Si tienes una API que se implementó en varias clases, entonces tu objetoremote.Service
es una colección de clases, como se describe en Crear una API implementada con varias clases.La necesidad de crear un módulo separado para el objeto
endpoints.api_server
depende de que hayas creado una sola API o múltiples.Si creaste múltiples API (con más de una subclase
remote.Service
) definidas en múltiples archivos, te recomendamos que crees un módulo separado para el objetoendpoints.api_server
de forma que puedas importar todos los archivos de clase.Si creaste una sola API, puedes agregar el código
endpoints.api_server
necesario al módulo en el que defines tu API porque no necesitas importar ninguna otra clase.
En tu archivo
app.yaml
, asigna el servidor web que creaste a la ubicación de Cloud Endpoints de la siguiente manera:donde
main
es el módulo de Python en el que definiste el objetoendpoints.api_server
.
Entrega tu API desde una ruta diferente
Opcional: Para entregar tu API desde una ruta diferente, por ejemplo, /api/
, haz lo siguiente:
Modifica el decorador:
@endpoints.api(name='echo', version='v1', base_path='/api/')
Cambia la sección
handlers
en el archivoapp.yaml
:handlers: - url: /api/.* script: main.api
Registro en los marcos de trabajo de Endpoints para Python
Los marcos de trabajo de Endpoints para Python registran la información sobre el estado de la aplicación y el ciclo de vida de las solicitudes con el módulo de registro estándar de Python. Para obtener más información sobre los registros de App Engine y cómo acceder a ellos, consulta Leer y escribir registros de aplicación en la documentación de App Engine.
El módulo de registro de Python proporciona niveles de registro predefinidos. En orden ascendente de gravedad, los niveles de registro son los siguientes:
Nivel de registro | Descripción |
---|---|
DEBUG |
Proporciona registros detallados. Por lo general, solo configuras este nivel cuando solucionas un problema. |
INFO |
El nivel predeterminado para los marcos de trabajo de Endpoints. Te permite registrar el progreso de la aplicación en un nivel alto. |
WARNING |
Te alerta cuando ocurre algo inesperado, pero la aplicación puede recuperarse y seguir ejecutándose normalmente. |
ERROR |
Te alerta cuando ocurre un error que puede causar pérdida de funcionalidad, pero la aplicación sigue ejecutándose. |
CRITICAL |
Te alerta cuando ocurre un evento o error grave que puede causar que se cierre la aplicación. |
Los registradores siguen una jerarquía separada por puntos. Por ejemplo, el registrador endpoints.api_config
es un secundario de endpoints
. Esta jerarquía te otorga controles precisos sobre los registros que se emiten o se suprimen. Por lo general, solo cambias los dos registradores raíz de los marcos de trabajo de Endpoints: endpoints
y endpoints_management
.
Habilitar el registro de DEBUG
para los marcos de trabajo de Endpoints.
Con el fin de evitar la sobrecarga del lector de registros, los marcos de trabajo de Endpoints configuran sus registradores para que solo almacenen las entradas de registro con nivel INFO
o superior. Luego de que los marcos de trabajo de Endpoints se importen a tu módulo, puedes cambiar el nivel de registro en cualquier momento de la siguiente manera:
import logging
logging.getLogger('endpoints').setLevel(logging.DEBUG)
logging.getLogger('endpoints_management').setLevel(logging.DEBUG)
El método setLevel
configura el nivel de registro mínimo del registrador.