En esta página se explica cómo configurar, desplegar y enviar solicitudes a una API de ejemplo mediante Cloud Endpoints Frameworks para Python. Endpoints Frameworks para Python está integrado con el entorno de ejecución estándar de Python 2.7 de App Engine. Endpoints Frameworks incluye herramientas, bibliotecas y funciones que te permiten generar APIs y bibliotecas de cliente a partir de una aplicación de App Engine.
Obtener el código de ejemplo
Para clonar la API de ejemplo de GitHub, sigue estos pasos:
Clona el repositorio de ejemplo en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
Cambia al directorio que contiene el código de ejemplo:
cd python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
Configurar Endpoints
Para configurar Endpoints, primero debes instalar la biblioteca de Python de Endpoints Frameworks. A continuación, usa una herramienta de la biblioteca Endpoints Frameworks para generar un documento de OpenAPI de la API de ejemplo. Necesitas la biblioteca de Endpoints Frameworks y el documento OpenAPI para que Endpoints pueda gestionar la API. Para obtener más información, consulta Añadir gestión de APIs.
Instalar la biblioteca de Endpoints Frameworks
En esta sección se explica cómo usar pip
de Python para añadir la biblioteca de Endpoints Frameworks al directorio del proyecto de la API de ejemplo.
Para añadir la biblioteca Endpoints Frameworks al ejemplo, sigue estos pasos:
Asegúrate de que estás en el directorio principal de la API de ejemplo,
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
.Crea un subdirectorio
/lib
en el proyecto:mkdir lib
En el directorio principal de ejemplo
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
, ejecuta el comando de instalación:pip install --target lib --requirement requirements.txt --ignore-installed
Ten en cuenta lo siguiente:
Este comando
pip
puede usar GNU Compiler Collection (GCC) para compilar módulos de extensión. Si usas macOS y es la primera vez que ejecutas GCC en tu sistema, es posible que tengas que aceptar la licencia de Xcode de Apple. Para hacerlo, ejecutasudo xcodebuild -license
.Si tienes varias versiones de Python instaladas en tu ordenador, asegúrate de que estás usando una versión de
pip
correspondiente a la versión de Python que estás usando en este tutorial. Las versiones no coincidentes (por ejemplo,pip
de Python 3.4 mientras se usapython
de Python 2.7) pueden provocar errores que pueden ser difíciles de entender. Si es necesario, puedes ejecutar pip como módulo de Python: sustituyepip
en el comando anterior porpython -m pip
.Si
pip
no encuentra un paquete adecuado al ejecutar el comando, prueba a actualizarlo ejecutandopip install --upgrade pip
. Cuando se haya completado la actualización, vuelve a probar el comando de instalación.En algunas versiones de Debian y Ubuntu,
pip
puede fallar con DistutilsOptionError. Si aparece este error, añade la marca --system.
Si se completa correctamente, el directorio lib
se rellena con los archivos necesarios para compilar la aplicación Endpoints Frameworks.
Generar el documento de OpenAPI
Utilizas una herramienta de la biblioteca Endpoints Frameworks para generar un documento que describa la API REST del código de ejemplo.
Para generar el documento de OpenAPI, sigue estos pasos:
Asegúrate de que estás en el directorio principal de ejemplo:
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
Genera el documento de OpenAPI:
python lib/endpoints/endpointscfg.py get_openapi_spec main.EchoApi --hostname [YOUR_PROJECT_ID].appspot.com
Sustituye
[YOUR_PROJECT_ID]
por el ID de tu proyecto. Google Cloud Ignora las advertencias que se muestran. La herramienta Endpoints genera un documento OpenAPI llamadoechov1openapi.json
en el directorio actual. La herramienta Endpoints asigna al archivo el nombre y la versión del servicio especificados en el decorador@endpoints.api
. Consulta más información en Crear la API.Endpoints usa el texto especificado en el argumento
hostname
como nombre del servicio. El formato de nombreYOUR_PROJECT_ID.appspot.com
coincide con la entrada DNS que se crea automáticamente al implementar la API en el backend de App Engine. Por lo tanto, en este caso, el nombre del servicio Endpoints y el nombre de dominio completo (FQDN) son los mismos.
Si se completa correctamente, se mostrará el siguiente mensaje:
OpenAPI spec written to ./echov1openapi.json
Desplegar la configuración de Endpoints
Para desplegar la configuración de Endpoints, se usa Service Infrastructure, la plataforma de servicios básicos de Google que usan Endpoints y otros servicios para crear y gestionar APIs y servicios.
Para implementar el archivo de configuración, sigue estos pasos:
- Asegúrate de que estás en el directorio principal de ejemplo:
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
- Para implementar el documento de OpenAPI que se ha generado en la sección anterior, ejecuta el siguiente comando:
gcloud endpoints services deploy echov1openapi.json
De esta forma, se crea un servicio de Endpoints con el nombre que has especificado en el argumento
hostname
al ejecutar la herramienta de Endpoints para generar el documento OpenAPI. Independientemente del nombre del servicio Endpoints, cuando despliegue la API en App Engine, se creará un registro DNS con el formato de nombreYOUR_PROJECT_ID.appspot.com
, que es el FQDN que usará cuando envíe solicitudes a la API.Mientras crea y configura el servicio, Gestión de servicios muestra mucha información en la terminal. Puedes ignorar las advertencias sobre las rutas de
echov1openapi.json
que no requieren una clave de API. Cuando se complete la implementación, se mostrará un mensaje similar al siguiente:Service Configuration [2017-02-13r2] uploaded for service [example-project-12345.appspot.com]
En el ejemplo anterior,
2017-02-13-r2
es el ID de configuración del servicio yexample-project-12345.appspot.com
es el nombre del servicio.Consulta
gcloud endpoints services deploy
en la documentación de referencia degcloud
para obtener más información.
Comprobando los servicios necesarios
Para proporcionar gestión de APIs, Endpoints Frameworks requiere los siguientes servicios:Nombre | Título |
---|---|
servicemanagement.googleapis.com |
API Service Management |
servicecontrol.googleapis.com |
API Service Control |
En la mayoría de los casos, el comando gcloud endpoints services deploy
habilita estos servicios obligatorios. Sin embargo, el comando gcloud
se completa correctamente, pero no habilita los servicios necesarios en las siguientes circunstancias:
Si has usado una aplicación de terceros, como Terraform, y no incluyes estos servicios.
Has desplegado la configuración de Endpoints en unGoogle Cloud proyecto en el que estos servicios se han inhabilitado explícitamente.
Usa el siguiente comando para confirmar que los servicios necesarios están habilitados:
gcloud services list
Si no ves los servicios necesarios, habilítalos:
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
También debes habilitar el servicio Endpoints:
gcloud services enable ENDPOINTS_SERVICE_NAME
Para determinar el ENDPOINTS_SERVICE_NAME, puedes hacer lo siguiente:
Después de desplegar la configuración de Endpoints, ve a la página Endpoints de la consola de Cloud. La lista de posibles ENDPOINTS_SERVICE_NAME se muestra en la columna Nombre del servicio.
En OpenAPI, ENDPOINTS_SERVICE_NAME es el valor que has especificado en el campo
host
de tu especificación de OpenAPI. En gRPC, ENDPOINTS_SERVICE_NAME es el valor que has especificado en el camponame
de tu configuración de endpoints de gRPC.
Para obtener más información sobre los comandos de gcloud
, consulta los servicios de gcloud
.
Ejecutar la muestra de forma local
Después de implementar la configuración de Endpoints, puedes ejecutar el ejemplo de forma local mediante el servidor de desarrollo local.
Asegúrate de que estás en el directorio principal de ejemplo:
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
Inicia el servidor de desarrollo local:
dev_appserver.py ./app.yaml
De forma predeterminada, el servidor de desarrollo escucha en
http://localhost:8080
, como se indica en los registros de la consola que imprime Google Clouddev_appserver.py
:INFO 2018-01-01 [...] Starting module "default" running at: http://localhost:8080
Envía una solicitud al servidor de desarrollo local:
Linux o macOS
curl \
--request POST \
--header "Content-Type: application/json" \
--data '{"message":"hello world"}' \
http://localhost:8080/_ah/api/echo/v1/echo
En los curl
anteriores:
- La opción
--data
especifica los datos que se van a enviar a la API. - La opción
--header
especifica que los datos están en formato JSON.
PowerShell
(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' `
-Headers @{"content-type"="application/json"} `
-URI "http://localhost:8080/_ah/api/echo/v1/echo").Content
En el ejemplo anterior, las dos primeras líneas terminan en una comilla inversa. Cuando pegues el ejemplo en PowerShell, asegúrate de que no haya ningún espacio después de las comillas inversas. Para obtener información sobre las opciones que se usan en la solicitud de ejemplo, consulta Invoke-WebRequest en la documentación de Microsoft.
La API devuelve el mensaje que le envías y responde con lo siguiente:
{
"message": "hello world"
}
Desplegar el backend de la API
Hasta ahora, has implementado el documento OpenAPI en Service Management, pero aún no has implementado el código que sirve de backend de la API. En esta sección se explica cómo desplegar la API de ejemplo en App Engine.
Para desplegar el backend de la API, sigue estos pasos:
- Para mostrar el ID de configuración del servicio, ejecuta el siguiente comando:
gcloud endpoints configs list --service=[YOUR_PROJECT_ID].appspot.com
Sustituye
[YOUR_PROJECT_ID]
por el ID del proyecto. Por ejemplo:gcloud endpoints configs list --service=example-project-12345.appspot.com
- Open the
app.yaml
file in thepython-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
directory. - Haga los siguientes cambios en la sección
env_variables
:- En el campo
ENDPOINTS_SERVICE_NAME
, sustituyeYOUR-PROJECT-ID
por el ID de tu proyecto Google Cloud . - En el campo
ENDPOINTS_SERVICE_VERSION
, sustituye el texto por el ID de configuración del servicio. Por ejemplo:
ENDPOINTS_SERVICE_NAME: example-project-12345.appspot.com ENDPOINTS_SERVICE_VERSION: 2017-02-13r2
- En el campo
- Ejecuta el siguiente comando:
gcloud app deploy
- Sigue las indicaciones que aparecen en pantalla. Espera unos instantes a que la implementación se complete correctamente. Ignora los mensajes de advertencia. Cuando se complete la implementación, aparecerá un mensaje similar al siguiente:
File upload done. Updating service [default]...done.
Si has recibido un mensaje de error, consulta la sección Solución de problemas de la documentación de App Engine para obtener más información.
Te recomendamos que esperes unos minutos antes de enviar solicitudes a tu API mientras App Engine se inicializa por completo.
- La opción
--data
especifica los datos que se van a enviar a la API. - La opción
--header
especifica que los datos están en formato JSON. - Selecciona
POST
como verbo HTTP. - En el encabezado, selecciona la clave
content-type
y el valorapplication/json
. - En el cuerpo, introduce lo siguiente:
{"message":"hello world"}
-
Introduce la URL de la aplicación de ejemplo. Por ejemplo:
https://example-project-12345.appspot.com/_ah/api/echo/v1/echo
Consulta los gráficos de actividad de tu API en la Google Cloud consola, en la página Endpoints > Service.
Ir a la página Servicios de Endpoints
La solicitud puede tardar unos instantes en reflejarse en los gráficos.
Consulta los registros de solicitudes de tu API en la página Explorador de registros.
Enviar una solicitud a la API de ejemplo
Linux o macOS
Envía una solicitud HTTP mediante curl
. Sustituye [YOUR_PROJECT_ID]
por elGoogle Cloud ID de tu proyecto:
curl \
--request POST \
--header "Content-Type: application/json" \
--data '{"message":"hello world"}' \
https://[YOUR_PROJECT_ID].appspot.com/_ah/api/echo/v1/echo
En los curl
anteriores:
PowerShell
Envía una solicitud HTTP mediante Invoke-WebRequest
. Sustituye [YOUR_PROJECT_ID]
por el ID de tu proyecto: Google Cloud
(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' `
-Headers @{"content-type"="application/json"} -URI `
"https://[YOUR_PROJECT_ID].appspot.com/_ah/api/echo/v1/echo").Content
En el ejemplo anterior, las dos primeras líneas terminan en una comilla inversa. Cuando pegues el ejemplo en PowerShell, asegúrate de que no haya ningún espacio después de las comillas inversas. Para obtener información sobre las opciones que se usan en la solicitud de ejemplo, consulta Invoke-WebRequest en la documentación de Microsoft.
Aplicación de terceros
Puedes usar una aplicación de terceros, como la extensión Postman del navegador Chrome, para enviar la solicitud:
La API devuelve el mensaje que le envías y responde con lo siguiente:
{
"message": "hello world"
}
Si no has recibido una respuesta correcta, consulta el artículo Solucionar problemas de errores de respuesta.
Monitorizar la actividad de la API
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-10-19 (UTC).