En esta página se muestra cómo configurar, implementar y enviar solicitudes a una API de muestra mediante Cloud Endpoints Frameworks para Python. Endpoints Frameworks para Python está integrado en el entorno de ejecución estándar Python 2.7 de App Engine. Endpoints Frameworks consta de herramientas, bibliotecas y funciones que te permiten generar bibliotecas cliente y API desde una aplicación de App Engine.
Objetivos
Usa la siguiente lista de tareas de alto nivel a medida que avanzas en el instructivo. Todas las tareas son necesarias para enviar solicitudes a la API con éxito.
- Configurar un proyecto de Google Cloud Consulta Antes de comenzar.
- Instala el software obligatorio y crea una aplicación de App Engine. Consulta Cómo instalar y configurar el software obligatorio.
- Descarga el código de muestra. Consulta Cómo descargar el código de muestra.
- Genera un documento de OpenAPI. Consulta Cómo configurar Endpoints.
- Implementa la configuración de Endpoints para crear un servicio de este sistema. Consulta Cómo implementar la configuración de Endpoints.
- Ejecuta la muestra en tu computadora. Consulta Ejecuta la muestra de manera local.
- Crea un backend para entregar la API y, luego, implementarla. Consulta Implementa el backend de la API.
- Envía una solicitud a la API. Consulta Enviar una solicitud a la API.
- Realiza un seguimiento de la actividad de la API. Consulta Realizar un seguimiento de la actividad de la API.
- Evita que se apliquen cargos a tu cuenta de Google Cloud . Consulta Limpieza.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Toma nota del Google Cloud ID del proyecto, ya que lo necesitarás más adelante.
- Sigue las instrucciones en Cómo instalar Google Cloud CLI para Python a fin de obtener la configuración del entorno de desarrollo estándar de App Engine. Asegúrate de instalar los componentes
app-engine-pythonyapp-engine-python-extrasgcloud. - Ejecuta los siguientes comandos:
-
Actualiza gcloud CLI.
gcloud components update
-
Asegúrate de que Google Cloud CLI (
gcloud) esté autorizada para acceder a tus datos y servicios en Google Cloud:gcloud auth login
- Se abrirá una nueva pestaña del navegador donde debes elegir una cuenta.
- Configura el proyecto predeterminado con el ID de tu proyecto.
gcloud config set project [YOUR_PROJECT_ID]
Reemplaza
[YOUR_PROJECT_ID]por el ID del proyecto proyecto Google Cloud. Si tienes otros proyectos de Google Cloud y deseas usargcloudpara administrarlos, consulta Administra gcloud CLI de gcloud.
-
Actualiza gcloud CLI.
-
Necesitas una aplicación para enviar solicitudes a la API de muestra.
- Usuarios de Linux y macOS: En este instructivo se proporciona un ejemplo del uso de
curl, que suele venir preinstalado en el sistema operativo. Si no tienencurl, pueden descargarlo de lacurlpágina de actualizaciones y descargas. - Usuarios de Windows: En este instructivo se proporciona un ejemplo del uso de
Invoke-WebRequest, que es compatible con PowerShell 3.0 y versiones posteriores.
- Usuarios de Linux y macOS: En este instructivo se proporciona un ejemplo del uso de
- Asegúrate de que tu entorno de desarrollo de Python incluya pip.
- Asegúrate de que puedas compilar extensiones C para Python.
- Windows: Es obligatorio tener 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.
- Otros sistemas operativos: En función del sistema operativo que uses, es posible que necesites instalar herramientas del compilador (a veces, en un paquete denominado
build-essential) o encabezados de desarrollo de Python (a veces, en un paquete denominadopython-dev).
-
Para Linux, configura la variable de entorno
ENDPOINTS_GAE_SDKcomo la ruta de la carpeta del SDK de App Engine:[Path-to-Google-Cloud-SDK]/platform/google_appengineReemplaza
[Path-to-Google-Cloud-SDK]con el resultado del siguiente comando:gcloud info --format="value(installation.sdk_root)"
- Para crear una aplicación de App Engine, haz lo siguiente:
- Selecciona la región en la que deseas crear tu aplicación de App Engine. Ejecuta el siguiente comando para obtener una lista de regiones:
gcloud app regions list
- Crea una aplicación de App Engine con el siguiente comando.
Reemplaza
[YOUR_PROJECT_ID]por el ID del proyecto de Google Cloudy[YOUR_REGION]por la región en la que deseas que se cree la aplicación de App Engine.gcloud app create \ --project=[YOUR_PROJECT_ID] \ --region=[YOUR_REGION]
Por ejemplo:
gcloud app create --project=example-project-12345 --region=us-central
- Selecciona la región en la que deseas crear tu aplicación de App Engine. Ejecuta el siguiente comando para obtener una lista de regiones:
Instala y configura el software obligatorio
Cómo obtener el código de muestra
Para clonar la API de muestra desde GitHub:
Clona el repositorio de muestra en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/python-docs-samplesCambia al directorio que contiene el código de muestra:
cd python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
Cómo configurar Endpoints
Para configurar Endpoints, primero debes instalar la biblioteca de Python de Endpoints Frameworks. Luego, usa una herramienta de la biblioteca de Endpoints Frameworks para generar un documento de OpenAPI para la API de muestra. Necesitas la biblioteca de Endpoints Frameworks y el documento de OpenAPI para que Endpoints pueda administrar la API. Si deseas obtener más información, consulta Cómo agregar una administración de API.
Cómo instalar la biblioteca de Endpoints Frameworks
En esta sección se explica cómo usar pipde Python para agregar la biblioteca de Endpoints Frameworks al directorio del proyecto de la API de muestra.
Para agregar la biblioteca de Endpoints Frameworks a la muestra, sigue estos pasos:
Asegúrate de estar en el directorio principal de la API de muestra,
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo.Crea un subdirectorio
/liben el proyecto:mkdir libDesde el directorio principal de muestra
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo, ejecuta el comando de instalación:pip install --target lib --requirement requirements.txt --ignore-installedTen en cuenta lo siguiente:
Este comando
pippuede usar GCC (la colección de compiladores de GNU) para compilar módulos de extensión. Si tienes macOS y esta es la primera vez que ejecutas GCC en tu sistema, es posible que debas aceptar la licencia Xcode de Apple. Para hacerlo, ejecutasudo xcodebuild -license.Si tienes varias versiones de Python instaladas en tu computadora, asegúrate de usar una versión de
pipcorrespondiente a la versión de Python que usarás en este instructivo. La incompatibilidad entre las versiones (por ejemplo,pipde Python 3.4 mientras se usapythonde Python 2.7) pueden causar errores difíciles de entender. Si es necesario, puedes ejecutar pip como un módulo de Python: reemplazapipen el comando anterior conpython -m pip.Si
pipno puede encontrar un paquete adecuado cuando ejecuta el comando, intenta actualizarlo ejecutandopip install --upgrade pip. Luego de que se complete la actualización, vuelve a intentar el comando de instalación.En algunas versiones de Debian y Ubuntu,
pippodría fallar con DistutilsOptionError. Si ves este error, agrega la marca --system.
Cuando el proceso finalice correctamente, el directorio lib se propagará con los archivos necesarios para compilar la aplicación de Endpoints Frameworks.
Cómo generar el documento de OpenAPI
Usas una herramienta de la biblioteca de Endpoints Frameworks para generar un documento que describe la API de REST del código de muestra.
Para generar el documento de OpenAPI, realiza los siguientes pasos:
Asegúrate de que estés en el directorio principal de muestra:
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echoGenera el documento de OpenAPI:
python lib/endpoints/endpointscfg.py get_openapi_spec main.EchoApi --hostname [YOUR_PROJECT_ID].appspot.comReemplaza
[YOUR_PROJECT_ID]por el Google Cloud ID del proyecto. Ignora las advertencias que se muestran. La herramienta de Endpoints genera un documento de OpenAPI llamadoechov1openapi.jsonen el directorio actual. La herramienta de Endpoints nombra el archivo en función del nombre y la versión del servicio especificado en el decorador@endpoints.api. Consulta Cómo crear la API para obtener más información.Endpoints utiliza el texto especificado en el argumento
hostnamecomo el nombre del servicio. El formato del nombreYOUR_PROJECT_ID.appspot.comcoincide con la entrada de DNS que se crea automáticamente cuando implementas la API en el backend de App Engine. Por eso, en este caso, tanto el nombre del servicio de Endpoints como el nombre de dominio completamente calificado (FQDN) son iguales.
Cuando el proceso finalice con éxito, se mostrará el siguiente mensaje:
OpenAPI spec written to ./echov1openapi.json
Implemente la configuración de Endpoints
Para implementar la configuración de Endpoints, utiliza la Infraestructura de servicios, que es la plataforma básica de servicios de Google utilizada por Endpoints y otros servicios con el fin de crear y administrar las API y los servicios.
Para implementar el archivo de configuración, haz lo siguiente:
- Asegúrate de que estés en el directorio principal de muestra:
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
- Implementa el documento de OpenAPI que se generó en la sección anterior mediante la ejecución del siguiente comando:
gcloud endpoints services deploy echov1openapi.json
Esto crea un servicio de Endpoints nuevo con el nombre que especificaste en el argumento
hostnamecuando ejecutaste la herramienta de Endpoints para generar el documento de OpenAPI. Sin importar cuál sea el nombre del servicio de Endpoints, cuando implementas la API en App Engine se crea un registro DNS con el formato de nombreYOUR_PROJECT_ID.appspot.com, que es el FQDN que usas cuando envías solicitudes a la API.Mientras se crea y configura el servicio, Service Management envía una gran cantidad de información a la terminal. Puedes ignorar sin riesgo las advertencias que indican que las rutas de
echov1openapi.jsonno requieren una clave de API. Cuando finalice la implementación, aparecerá 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-r2es el ID de la configuración del servicio yexample-project-12345.appspot.comes el nombre del servicio.Consulta
gcloud endpoints services deployen la documentación de referenciagcloudpara obtener más información.
Verifica los servicios requeridos
Para permitirte administrar tu API, Endpoints Frameworks requiere los siguientes servicios:| Nombre | Título |
|---|---|
servicemanagement.googleapis.com |
API de Administración de servicios |
servicecontrol.googleapis.com |
Service Control API |
En la mayoría de los casos, el comando de gcloud endpoints services deploy habilita estos servicios obligatorios. Sin embargo, el comando gcloud se completa de manera correcta sin habilitar los servicios requeridos en las circunstancias siguientes:
Usaste una aplicación de terceros, como Terraform, y no incluiste estos servicios.
Implementaste la configuración de Endpoints en un proyecto deGoogle Cloud existente en el que estos servicios se inhabilitaron de forma explícita.
Usa el siguiente comando para confirmar que los servicios requeridos están habilitados:
gcloud services list
Si no ves los servicios necesarios que se incluyeron en la lista, habilítalos:
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.comTambién habilita el servicio de Endpoints:
gcloud services enable ENDPOINTS_SERVICE_NAME
Para determinar la variable ENDPOINTS_SERVICE_NAME, puedes hacer lo siguiente:
Después de implementar la configuración de Endpoints, ve a la página Endpoints en la consola de Cloud. La lista de posibles ENDPOINTS_SERVICE_NAME se muestra en la columna Nombre del servicio.
Para OpenAPI, el ENDPOINTS_SERVICE_NAME es lo que especificaste en el campo
hostde tu especificación de OpenAPI. Para gRPC, el ENDPOINTS_SERVICE_NAME es lo que especificaste en el camponamede tu configuración de Endpoints de gRPC.
Para obtener más información sobre los comandos gcloud, consulta servicios de gcloud.
Ejecuta la muestra de forma local
Luego de implementar la configuración de Endpoints, puedes ejecutar la muestra de forma local con el servidor de desarrollo local.
Asegúrate de que estés en el directorio principal de muestra:
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echoInicia el servidor de desarrollo local:
dev_appserver.py ./app.yamlDe forma predeterminada, el servidor de desarrollo recibe datos en
http://localhost:8080, como se indica en los registros de la consola de Google Cloud que imprimedev_appserver.py:INFO 2018-01-01 [...] Starting module "default" running at: http://localhost:8080Enví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 el curl anterior, sucede lo siguiente:
- La opción
--dataespecifica los datos que se publicarán en la API. - La opción
--headerespecifica 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 un acento grave. Cuando pegues el ejemplo en PowerShell, asegúrate de que no quede un espacio después de los acentos graves. Si deseas obtener más información sobre las opciones utilizadas en la solicitud de ejemplo, consulta Invoke-WebRequest en la documentación de Microsoft.
La API repite el mensaje que le enviaste y responde lo siguiente:
{
"message": "hello world"
}
Cómo implementar el backend de la API
Hasta ahora, implementaste la configuración de OpenAPI en Service Management, pero aún no has implementado el código que entregará el backend de la API. En esta sección, se explica cómo implementar la API de muestra en App Engine.
Para implementar el backend de la API:
- Ejecuta el siguiente comando para mostrar el ID de configuración del servicio:
gcloud endpoints configs list --service=[YOUR_PROJECT_ID].appspot.com
Reemplaza
[YOUR_PROJECT_ID]con el ID del proyecto. Por ejemplo:gcloud endpoints configs list --service=example-project-12345.appspot.com
- Open the
app.yamlfile in thepython-docs-samples/appengine/standard/endpoints-frameworks-v2/echodirectory. - Realiza los cambios que aparecen a continuación en la sección
env_variables:- En el campo
ENDPOINTS_SERVICE_NAME, reemplazaYOUR-PROJECT-IDpor tu ID del proyecto Google Cloud . - En el campo
ENDPOINTS_SERVICE_VERSION, reemplaza el texto con 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 para que la implementación se realice de manera correcta; ignora los mensajes de advertencia. Cuando se complete la implementación, verás un mensaje similar al siguiente:
File upload done. Updating service [default]...done.
Si recibiste un mensaje de error, consulta la sección Solución de problemas en la documentación de App Engine para obtener más información.
Recomendamos que esperes unos minutos antes de enviar solicitudes a la API mientras App Engine se inicializa de forma completa.
- La opción
--dataespecifica los datos que se publicarán en la API. - La opción
--headerespecifica que los datos están en formato JSON. - Selecciona
POSTcomo el verbo HTTP. - Para el encabezado, selecciona la clave
content-typey el valorapplication/json. - Para el cuerpo, ingresa lo siguiente:
{"message":"hello world"} -
Ingresa la URL a la aplicación de muestra. Por ejemplo:
https://example-project-12345.appspot.com/_ah/api/echo/v1/echo Consulta los gráficos de actividad de tu API en la consola de Google Cloud en la página Endpoints > Servicio.
Ir a la página Servicios de Endpoints
Es posible que la solicitud tarde unos minutos en reflejarse en los grafos.
Revisa los registros de solicitud de tu API en la página Explorador de registros.
Cómo enviar una solicitud a la API de muestra
Linux o macOS
Envía una solicitud HTTP con curl. Reemplaza [YOUR_PROJECT_ID] por elGoogle Cloud ID del 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 el curl anterior, sucede lo siguiente:
PowerShell
Envía una solicitud HTTP con Invoke-WebRequest. Reemplaza [YOUR_PROJECT_ID] por el Google Cloud ID de tu proyecto:
(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 un acento grave. Cuando pegues el ejemplo en PowerShell, asegúrate de que no quede un espacio después de los acentos graves. Para obtener más información sobre las opciones usadas en la solicitud de ejemplo, consulta Invoke-WebRequest en la documentación de Microsoft.
App de terceros
Puedes usar una aplicación de terceros, como la extensión del navegador Chrome Postman, para enviar la solicitud:
La API repite el mensaje que le enviaste y responde lo siguiente:
{
"message": "hello world"
}
Si no obtuviste una respuesta correcta, consulta Soluciona errores de respuesta.
Realiza un seguimiento de la actividad de la API
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
¿Qué sigue?
- Obtén más información sobre la arquitectura de Endpoints Frameworks.
- Obtén más información sobre cómo crear una API.
- Obtén más información para crear un servidor web y entregar tu API.
- Obtén más información sobre cómo entregar tu API desde una ruta diferente.
- Obtén más información sobre cómo supervisar tu API.
- Obtén más información sobre cómo restringir el acceso con claves de API.
- Obtén más información sobre cómo configurar un nombre de dominio personalizado.
- Obtén más información sobre cómo manejar control de versiones de API.
- Obtén más información sobre opciones de asistencia.
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-10-22 (UTC)