Adicionar gestão de APIs

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

  1. Instale e inicialize a CLI gcloud:

    Transfira e instale a CLI gcloud

  2. Instale o componente gcloud que inclui a extensão do App Engine para Python:

    gcloud components install app-engine-python
    
  3. Atualize a CLI gcloud:

    gcloud components update
    
  4. 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.

  5. 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
    
  6. 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

  1. 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 denominado python-dev).

  2. Altere o diretório para o diretório principal da API.

  3. Crie um subdiretório /lib no diretório principal da API:

    mkdir lib
    
  4. 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

  1. Edite o ficheiro do seu projeto app.yaml e adicione uma secção env_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 ficheiro app.yaml, o Endpoints gere a sua API depois de voltar a implementar a aplicação.

  2. Volte a implementar a sua aplicação:

    gcloud app deploy
    
  3. 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.
    
  4. 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"
    }
    
  5. Fazer alguns pedidos adicionais à sua API.

  6. Para ver as métricas da API, abra a página Endpoints > Serviços na Google Cloud consola do seu projeto:

    Aceda à página Serviços de pontos finais