Esta página mostra como configurar, implementar e enviar pedidos para uma API de exemplo através dos Cloud Endpoints Frameworks para Python. O Endpoints Frameworks para Python está integrado com o ambiente de tempo de execução padrão do Python 2.7 do App Engine. Os Frameworks de Endpoints consistem em ferramentas, bibliotecas e capacidades que lhe permitem gerar APIs e bibliotecas cliente a partir de uma aplicação do App Engine.
Obter o exemplo de código
Para clonar a API de exemplo do GitHub:
Clone o repositório de exemplo para a sua máquina local:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
Altere para o diretório que contém o código de exemplo:
cd python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
Configurar pontos finais
Para configurar os Endpoints, tem de instalar primeiro a biblioteca Python dos Frameworks dos Endpoints. Em seguida, usa uma ferramenta da biblioteca Endpoints Frameworks para gerar um documento OpenAPI para a API de exemplo. Precisa da biblioteca Endpoints Frameworks e do documento OpenAPI para que o Endpoints possa gerir a API. Para mais informações, consulte Adicionar gestão de APIs.
Instalar a biblioteca Endpoints Frameworks
Esta secção explica como usar o pip
do Python para adicionar a biblioteca
Endpoints Frameworks ao diretório do projeto da API de exemplo.
Para adicionar a biblioteca Endpoints Frameworks ao exemplo:
Certifique-se de que está no diretório principal da API de exemplo,
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
.Crie um subdiretório
/lib
no projeto:mkdir lib
A partir do diretório principal de exemplo
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
, execute o comando de instalação:pip install --target lib --requirement requirements.txt --ignore-installed
Tenha em conta o seguinte:
Este comando
pip
pode usar a GNU Compiler Collection (GCC) para compilar módulos de extensão. Se estiver no macOS e esta for a primeira vez que executa o GCC no seu sistema, pode ter de aceitar a licença do XCode da Apple. Para tal, executesudo xcodebuild -license
.Se tiver várias versões do Python instaladas no seu computador, certifique-se de que está a usar uma versão do
pip
correspondente à versão do Python que está a usar neste tutorial. As incompatibilidades de versões (por exemplo,pip
do Python 3.4 enquanto usapython
do Python 2.7) podem causar erros que podem ser difíceis de compreender. Se necessário, pode executar o pip como um módulo do Python: substituapip
no comando anterior porpython -m pip
.Se
pip
não conseguir encontrar um pacote adequado quando executar o comando, experimente atualizá-lo executandopip install --upgrade pip
. Após a conclusão da atualização, experimente novamente o comando de instalação.Em algumas versões do Debian e Ubuntu, a instalação do
pip
pode falhar com o erro DistutilsOptionError. Se vir este erro, adicione a flag --system.
Após a conclusão com êxito, o diretório lib
é preenchido com os ficheiros necessários para criar a aplicação Endpoints Frameworks.
A gerar o documento OpenAPI
Usa uma ferramenta da biblioteca Endpoints Frameworks para gerar um documento que descreve a API REST do exemplo de código.
Para gerar o documento OpenAPI:
Certifique-se de que está no diretório principal de exemplo:
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
Gere o documento OpenAPI:
python lib/endpoints/endpointscfg.py get_openapi_spec main.EchoApi --hostname [YOUR_PROJECT_ID].appspot.com
Substitua
[YOUR_PROJECT_ID]
pelo ID do seu Google Cloud projeto. Ignore os avisos apresentados. A ferramenta Endpoints gera um documento OpenAPI denominadoechov1openapi.json
no diretório atual. A ferramenta Endpoints atribui ao ficheiro o nome com base no nome e na versão do serviço especificados no decorador@endpoints.api
. Consulte a secção Criar a API para mais informações.Os Endpoints usam o texto especificado no argumento
hostname
como o nome do serviço. O formato do nomeYOUR_PROJECT_ID.appspot.com
corresponde à entrada DNS criada automaticamente quando implementa a API no back-end do App Engine. Neste caso, o nome do serviço e o nome do domínio totalmente qualificado (FQDN) do Endpoints são iguais.
Após a conclusão com êxito, é apresentada a seguinte mensagem:
OpenAPI spec written to ./echov1openapi.json
Implementar a configuração dos pontos finais
Para implementar a configuração do Endpoints, usa a infraestrutura de serviços, a plataforma de serviços fundamentais da Google, usada pelo Endpoints e outros serviços para criar e gerir APIs e serviços.
Para implementar o ficheiro de configuração:
- Certifique-se de que está no diretório principal de exemplo:
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
- Implemente o documento OpenAPI gerado na secção anterior
executando o seguinte comando:
gcloud endpoints services deploy echov1openapi.json
Esta ação cria um novo serviço Endpoints com o nome que especificou no argumento
hostname
quando executou a ferramenta Endpoints para gerar o documento OpenAPI. Independentemente do nome do serviço Endpoints, quando implementa a API no App Engine, é criado um registo DNS com o formato de nomeYOUR_PROJECT_ID.appspot.com
, que é o FQDN que usa quando envia pedidos para a API.À medida que cria e configura o serviço, o Service Management envia muitas informações para o terminal. Pode ignorar com segurança os avisos sobre os caminhos em
echov1openapi.json
que não requerem uma chave da API. Quando a implementação estiver concluída, é apresentada uma mensagem semelhante à seguinte:Service Configuration [2017-02-13r2] uploaded for service [example-project-12345.appspot.com]
No exemplo anterior,
2017-02-13-r2
é o ID de configuração do serviço eexample-project-12345.appspot.com
é o nome do serviço.Consulte
gcloud endpoints services deploy
na documentação de referência dagcloud
para mais informações.
A verificar os serviços necessários
Para fornecer a gestão de APIs, o Endpoints Frameworks requer os seguintes serviços:Nome | Título |
---|---|
servicemanagement.googleapis.com |
Service Management API |
servicecontrol.googleapis.com |
Service Control API |
Na maioria dos casos, o comando gcloud endpoints services deploy
ativa estes serviços obrigatórios. No entanto, o comando gcloud
é concluído com êxito, mas não ativa os serviços necessários nas seguintes circunstâncias:
Se usou uma aplicação de terceiros, como o Terraform, e não incluiu estes serviços.
Implementou a configuração do Endpoints numGoogle Cloud projeto existente no qual estes serviços foram explicitamente desativados.
Use o seguinte comando para confirmar que os serviços necessários estão ativados:
gcloud services list
Se não vir os serviços necessários listados, ative-os:
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
Ative também o serviço Endpoints:
gcloud services enable ENDPOINTS_SERVICE_NAME
Para determinar o ENDPOINTS_SERVICE_NAME, pode:
Após implementar a configuração do Endpoints, aceda à página Endpoints na Cloud Console. A lista de ENDPOINTS_SERVICE_NAME possíveis é apresentada na coluna Nome do serviço.
Para a OpenAPI, o ENDPOINTS_SERVICE_NAME é o que especificou no campo
host
da sua especificação OpenAPI. Para o gRPC, o ENDPOINTS_SERVICE_NAME é o que especificou no camponame
da sua configuração de pontos finais gRPC.
Para mais informações sobre os comandos gcloud
, consulte os
serviços gcloud
.
Executar o exemplo localmente
Após implementar a configuração dos Endpoints, pode executar o exemplo localmente através do servidor de desenvolvimento local.
Certifique-se de que está no diretório principal de exemplo:
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
Inicie o servidor de desenvolvimento local:
dev_appserver.py ./app.yaml
Por predefinição, o servidor de desenvolvimento escuta em
http://localhost:8080
, conforme indicado nos registos da consola impressos pordev_appserver.py
: Google CloudINFO 2018-01-01 [...] Starting module "default" running at: http://localhost:8080
Envie um pedido para o servidor de programação local:
Linux ou Mac OS
curl \
--request POST \
--header "Content-Type: application/json" \
--data '{"message":"hello world"}' \
http://localhost:8080/_ah/api/echo/v1/echo
Nos curl
anteriores:
- A opção
--data
especifica os dados a publicar na API. - A opção
--header
especifica que os dados estão no 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
No exemplo anterior, as duas primeiras linhas terminam com um acento grave. Quando colar o exemplo no PowerShell, certifique-se de que não existe um espaço após os acentos graves. Para obter informações sobre as opções usadas no pedido de exemplo, consulte Invoke-WebRequest na documentação da Microsoft.
A API devolve a mensagem que lhe envia e responde com o seguinte:
{
"message": "hello world"
}
Implementar o back-end da API
Até agora, implementou o documento OpenAPI na gestão de serviços, mas ainda não implementou o código que publica o back-end da API. Esta secção explica como implementar a API de amostra no App Engine.
Para implementar o back-end da API:
- Execute o seguinte comando para apresentar o ID de configuração do serviço:
gcloud endpoints configs list --service=[YOUR_PROJECT_ID].appspot.com
Substitua
[YOUR_PROJECT_ID]
pelo ID do seu projeto. Por exemplo: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. - Faça as seguintes alterações na secção
env_variables
:- No campo
ENDPOINTS_SERVICE_NAME
, substituaYOUR-PROJECT-ID
pelo seu Google Cloud ID do projeto. - No campo
ENDPOINTS_SERVICE_VERSION
, substitua o texto pelo ID de configuração do serviço. Por exemplo:
ENDPOINTS_SERVICE_NAME: example-project-12345.appspot.com ENDPOINTS_SERVICE_VERSION: 2017-02-13r2
- No campo
- Execute o seguinte comando:
gcloud app deploy
- Siga as instruções no ecrã. Aguarde alguns momentos para que a implementação seja bem-sucedida, ignorando as mensagens de aviso. Quando a implementação estiver concluída, é apresentada uma mensagem
semelhante à seguinte:
File upload done. Updating service [default]...done.
Se recebeu uma mensagem de erro, consulte a secção Resolução de problemas na documentação do App Engine para informações.
Recomendamos que aguarde alguns minutos antes de enviar pedidos para a sua API enquanto o App Engine é completamente inicializado.
- A opção
--data
especifica os dados a publicar na API. - A opção
--header
especifica que os dados estão no formato JSON. - Selecione
POST
como verbo HTTP. - Para o cabeçalho, selecione a chave
content-type
e o valorapplication/json
. - Para o corpo, introduza o seguinte:
{"message":"hello world"}
-
Introduza o URL da aplicação de exemplo. Por exemplo:
https://example-project-12345.appspot.com/_ah/api/echo/v1/echo
Veja os gráficos de atividade da sua API na Google Cloud consola na página Endpoints > Serviço.
Aceda à página Serviços de pontos finais
Pode demorar alguns momentos até que o pedido seja refletido nos gráficos.
Consulte os registos de pedidos da sua API na página do Explorador de registos.
Enviar um pedido para a API de exemplo
Linux ou Mac OS
Envie um pedido HTTP através de curl
. Substitua [YOUR_PROJECT_ID]
pelo seu
Google Cloud ID do projeto:
curl \
--request POST \
--header "Content-Type: application/json" \
--data '{"message":"hello world"}' \
https://[YOUR_PROJECT_ID].appspot.com/_ah/api/echo/v1/echo
Nos curl
anteriores:
PowerShell
Envie um pedido HTTP através de Invoke-WebRequest
. Substitua [YOUR_PROJECT_ID]
pelo ID do seu Google Cloud projeto:
(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
No exemplo anterior, as duas primeiras linhas terminam com um acento grave. Quando colar o exemplo no PowerShell, certifique-se de que não existe um espaço após os acentos graves. Para obter informações sobre as opções usadas no pedido de exemplo, consulte Invoke-WebRequest na documentação da Microsoft.
App de terceiros
Pode usar uma aplicação de terceiros, como a extensão do navegador Chrome Postman, para enviar o pedido:
A API devolve a mensagem que lhe envia e responde com o seguinte:
{
"message": "hello world"
}
Se não recebeu uma resposta bem-sucedida, consulte o artigo Resolução de problemas de erros de resposta.
Acompanhamento da atividade da API
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-10-19 UTC.