Como migrar para o Cloud Endpoints Frameworks versão 2.0

O Cloud Endpoints Frameworks se chamava apenas Endpoints. Para distinguir as duas versões, a mais nova será chamada de Endpoints Frameworks 2.0 e a mais antiga, Endpoints 1.0. Nesta página, você verá como migrar um aplicativo do Cloud Endpoints 1.0 para o Endpoints Frameworks 2.0. Essa migração consiste em uma mudança de biblioteca e de configuração de aplicativo, mas não será necessário alterar seu código.

Benefícios

O Endpoints 2.0 traz uma série de benefícios, incluindo:

  • latência reduzida de solicitação;
  • melhor integração com os recursos do App Engine (como domínios personalizados);
  • novos recursos de gerenciamento de API.

O Endpoints Frameworks versão 2.0 não afeta as interfaces com sua API. Os clientes atuais continuam funcionando depois da migração sem nenhuma mudança de código no lado do cliente.

Visão geral do recurso

Os seguintes recursos são compatíveis com versões anteriores do Endpoints 1.0:

  • Protocolo JSON-REST, usado por todas as bibliotecas de cliente do Google
  • Serviço de descoberta
  • Todos os recursos de autenticação (OAuth2/OpenID Connect)
  • Suporte para biblioteca de cliente para clientes gerados
  • CORS (para autores da chamada ao JavaScript que não usam a biblioteca cliente do Google JavaScript)
  • API Explorer

A divisão de tráfego não está disponível.

Recursos excluídos

Os seguintes recursos estão indisponíveis. Se você precisar de algum deles, envie uma solicitação de recurso (em inglês).

  • Protocolo JSON-RPC, obrigatório para clientes iOS legados. Para criar clientes iOS para a API do Endpoints Frameworks 2.0, recomenda-se usar a biblioteca de cliente Objective-C de APIs do Google para APIs REST (em inglês)
  • ETags automáticos
  • Campos automáticos kind
  • Integração de IDE
  • Respostas parciais de fields
  • Criação automática de método da API PATCH

Como migrar do Endpoints 1.0

Para migrar da versão 1.0:

  1. Crie uma subpasta chamada /lib no diretório principal do seu aplicativo.

  2. Instale a biblioteca a partir do diretório principal do aplicativo:

     pip install -t lib google-endpoints --ignore-installed
    
  3. Remova as entradas - name: endpoints e version 1.0 do arquivo app.yaml do seu aplicativo na seção libraries. Exemplo:

    libraries:
    - name: endpoints   #Remove
      version: 1.0      #Remove
    
  4. Na seção libraries do arquivo app.yaml, adicione o seguinte:

    libraries:
    - name: pycrypto
      version: 2.6
    - name: ssl
      version: 2.7.11
    

    O Endpoints Frameworks requer essas versões das bibliotecas pycrypto e ssl.

  5. Na seção handlers do arquivo app.yaml, altere a diretiva url de - url: /_ah/spi/.* para - url: /_ah/api/.*.

  6. No diretório raiz de seu aplicativo, crie ou modifique um arquivo chamado appengine_config.py para incluir o seguinte:

    from google.appengine.ext import vendor
    
    vendor.add('lib')
    
  7. Verifique a string da versão da API. Sua string de versão, especificada no decorador @endpoints.api(version='v1', ...), aparece no caminho da API. Se você especificar uma string de versão compatível com o SemVer padrão , apenas o número da versão principal aparecerá no caminho da API quando você implantar a API. Por exemplo, uma API chamada echo com a versão 2.1.0 teria um caminho como /echo/v2. Se você atualizar a API echo para a versão 2.2.0 e implantar uma alteração compatível com as versões anteriores, o caminho permanecerá /echo/v2. Com essas ações, você atualiza o número da versão da API durante a alteração compatível com versões anteriores sem alterar os caminhos atuais para seus clientes. Mas se você atualizar a API echo para a versão 3.0.0 (porque está implantando uma alteração interruptiva), o caminho será alterado para /echo/v3.

  8. Implante o aplicativo Endpoints Frameworks novamente.

Como verificar uma nova implantação

Para verificar se o novo framework está disponibilizando tráfego:

  1. Envie alguns pedidos para a nova implantação.
  2. Acesse a página do Cloud Logging do seu projeto.

    Acessar a página Explorador de registros

  3. Se as solicitações forem exibidas com caminhos que começam com /_ah/api, o Endpoints Frameworks versão 2.0 exibirá a API. Os registros não podem mostrar solicitações com caminhos que começam com /_ah/spi. Elas indicam que o proxy do Endpoints 1.0 ainda está exibindo solicitações.

Como adicionar o gerenciamento de API

O Endpoints Frameworks 2.0 adiciona recursos de gerenciamento de API, incluindo:

  • gerenciamento de chave de API;
  • Compartilhamento da API
  • Autenticação de usuários
  • Métricas da API
  • registros da API.

Para começar, acesse a página Primeiros passos com o Endpoints Frameworks para Python.

Solução de problemas

Nesta seção, você verá os comportamentos erráticos comuns durante a migração para o Endpoints Frameworks versão 2.0 e as soluções sugeridas.

A API retorna erros 404, mas o API Explorer continua a listar as APIs corretamente

É obrigatória a remoção da antiga configuração do Endpoints 1.0 na migração para o Endpoints Frameworks 2.0. Se a configuração antiga ainda estiver presente na configuração do aplicativo, o serviço do Endpoints continuará a tratá-lo como versão 1.0. É possível ver solicitações, nos registros do App Engine, enviadas para /_ah/spi, que resultam em erros HTTP 404 enviados ao cliente.

  1. Remova as seguintes linhas do arquivo app.yaml, se estiverem presentes:

    handlers:
    - url: /_ah/spi/.*
      script: ...
    
  2. Certifique-se de que a seção handlers no seu arquivo app.yaml tenha o caminho correto:

    handlers:
    # The endpoints handler must be mapped to /_ah/api.
    - url: /_ah/api/.*
      script: ...
    

Mensagem de erro: ImportError: cannot import name locked_file

Isso acontece se suas dependências contêm uma versão da biblioteca oauth2client que é incompatível com o Google App Engine. Consulte o problema conhecido.