Os frameworks do Cloud Endpoints oferecem funcionalidades de gestão de APIs comparáveis às funcionalidades que o proxy de serviço extensível (ESP) oferece para o Cloud Endpoints. Os Endpoints Frameworks incluem um gateway de API integrado que interceta todos os pedidos e executa todas as verificações necessárias, como a autenticação, antes de encaminhar o pedido para o back-end da API. Quando o back-end responde, o Endpoints Frameworks recolhe e comunica telemetria. Pode ver as métricas da sua API na página Endpoints > Serviços na Google Cloud consola.
As funcionalidades de gestão de APIs disponíveis nos Frameworks de Endpoints incluem:
Para que a sua API seja gerida pelos Endpoints, tem de implementar um documento OpenAPI que descreva a sua API através da versão 2.0 da especificação OpenAPI. Esta página descreve como gerar e implementar um documento OpenAPI que permite que os Endpoints geram a sua API.
Se não adicionar a gestão de APIs, a sua API continua a processar pedidos, mas não aparece na página Endpoints > Serviços naGoogle Cloud consola, e a funcionalidade fornecida pelos Endpoints, como o registo, a monitorização e a definição de quotas, não está disponível.
Instalar e configurar o software necessário
Se ainda não o fez, instale e configure a CLI Google Cloud para Python e adicione a biblioteca Python dos Frameworks do Endpoints ao diretório do projeto da API para que seja carregada com o código da API após a implementação
Instale e configure a CLI gcloud para Python
Instale e inicialize a CLI gcloud:
Instale o componente
gcloud
que inclui a extensão do App Engine para Python:gcloud components install app-engine-python
Atualize a CLI gcloud:
gcloud components update
Certifique-se de que a CLI gcloud está autorizada a aceder aos seus dados e serviços em Google Cloud:
gcloud auth login
É aberto um novo separador do navegador e é-lhe pedido que escolha uma conta.
Defina o projeto predefinido para o ID do seu projeto. Substitua
YOUR_PROJECT_ID
pelo ID do seu Google Cloud projeto.gcloud config set project YOUR_PROJECT_ID
Para o Linux, defina a variável de ambiente
ENDPOINTS_GAE_SDK
para o caminho da pasta do SDK do App Engine:PATH_TO_CLOUD_SDK/platform/google_appengine
Substitua
PATH_TO_CLOUD_SDK
pela saída do seguinte comando:gcloud info --format="value(installation.sdk_root)"
Adicione a biblioteca Python do Endpoints Frameworks
Certifique-se de que consegue compilar extensões C para Python.
Windows: é necessário o Microsoft Visual C++ 9.0 ou superior. Pode transferir o compilador Microsoft Visual C++ para Python 2.7 a partir do centro de transferências da Microsoft
Outros sistemas operativos: consoante o seu sistema operativo, pode ter de instalar ferramentas de compilação (por vezes, num pacote denominado
build-essential
) e/ou os cabeçalhos de desenvolvimento do Python (por vezes, num pacote denominadopython-dev
).
Altere o diretório para o diretório principal da API.
Crie um subdiretório
/lib
no diretório principal da API:mkdir lib
Instale a biblioteca:
pip install -t lib google-endpoints --ignore-installed
Gere o documento OpenAPI
A partir do diretório principal da API, gere um documento OpenAPI através das ferramentas da framework. Por exemplo:
Classe única
No comando seguinte, substitua YOUR_PROJECT_ID
pelo ID do seu projeto. Google Cloud
python lib/endpoints/endpointscfg.py get_openapi_spec main.EchoApi \ --hostname YOUR_PROJECT_ID.appspot.com
Ignore os avisos apresentados.
Várias aulas
Pode listar várias classes na linha de comandos. Os pontos finais geram um documento OpenAPI para cada combinação de nome/versão da API.
Se quiser implementar várias classes de API com nomes de API diferentes como parte de um único serviço, também tem de adicionar a flag --x-google-api-name
.
A ativação desta flag adiciona restrições adicionais aos nomes das suas APIs. Especificamente, os nomes têm de corresponder à expressão regular [a-z][a-z0-9]{0,39}
; ou seja, o nome tem de ter entre 1 e 40 carateres, que podem ser carateres alfabéticos em minúsculas ou números, exceto que o primeiro caráter não pode ser um número. Por exemplo:
No comando seguinte, substitua YOUR_PROJECT_ID
pelo ID do seu Google Cloud projeto.
python lib/endpoints/endpointscfg.py get_openapi_spec main.FooApi main.BarApi \ --hostname YOUR_PROJECT_ID.appspot.com \ --x-google-api-name
Ignore os avisos apresentados.
Os Endpoints usam o texto que especificar no argumento hostname
como o nome do serviço. Quando implementa a API no App Engine, é criada automaticamente uma entrada de DNS com um nome no formato YOUR_PROJECT_ID.appspot.com
.
Implemente o documento OpenAPI
Classe única
gcloud endpoints services deploy echov1openapi.json
Várias aulas
Se tiver vários documentos OpenAPI, liste-os todos na linha de comandos. Por exemplo:
gcloud endpoints services deploy foov1openapi.json barv1openapi.json
Na primeira vez que implementa o seu documento (ou documentos) OpenAPI, é criado um novo serviço do Endpoints com o nome YOUR_PROJECT_ID.appspot.com
.
Após a conclusão com êxito, é apresentada uma linha semelhante à seguinte com o ID de configuração do serviço e o nome do serviço:
Service Configuration 2017-02-13r0 uploaded for service example-project-12345.appspot.com
No exemplo acima, 2017-02-13r0
é o ID da configuração do serviço. O ID de configuração do serviço consiste numa indicação de data/hora seguida de um número de revisão. Se implementar novamente o documento OpenAPI, o número de revisão é incrementado no ID de configuração do serviço.
Se precisar de apresentar novamente o ID de configuração do serviço, execute o seguinte comando, mas substitua YOUR_PROJECT_ID
pelo ID do projeto do seu projeto Google Cloud :
gcloud endpoints configs list --service=YOUR_PROJECT_ID.appspot.com
Pode criar o seu próprio documento OpenAPI e implementá-lo, em vez de usar um gerado. Basta substituir echov1openapi.json
acima pelo caminho para o seu documento OpenAPI. Para mais informações sobre como escrever um documento OpenAPI, consulte a vista geral da OpenAPI.
Volte a implementar a API e teste-a
Edite o ficheiro do seu projeto
app.yaml
e adicione uma secçãoenv_variables
da seguinte forma:env_variables: ENDPOINTS_SERVICE_NAME: YOUR_PROJECT_ID.appspot.com ENDPOINTS_SERVICE_VERSION: YOUR_SERVICE_VERSION
Substitua
YOUR_PROJECT_ID
pelo ID do seu projeto eGoogle Cloud pelo ID da configuração do serviço da secção anterior.YOUR_SERVICE_VERSION
Com esta adição ao ficheiroapp.yaml
, o Endpoints gere a sua API depois de voltar a implementar a aplicação.Volte a implementar a sua aplicação:
gcloud app deploy
Aguarde alguns momentos até 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.
Teste uma nova implementação bem-sucedida, por exemplo, com o comando curl:
curl --request POST \ --header "Content-Type: application/json" \ --data '{"content":"echo"}' \ https://YOUR_PROJECT_ID.appspot.com/_ah/api/echo/v1/echo?n=2
Substitua
echo
pelo nome da sua API.Os resultados devem apresentar algo semelhante ao seguinte:
{ "content": "echo echo" }
Fazer alguns pedidos adicionais à sua API.
Para ver as métricas da API, abra a página Endpoints > Serviços na Google Cloud consola do seu projeto: