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 2.0 não afeta as interfaces na API. Os clientes atuais continuam a funcionar depois da migração sem alterações 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 precisar de algum deles, envie uma solicitação de recurso.

  • 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 "Cloud Logging" do projeto.

    Acessar a página "Logs Viewer"

  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.

Com solucionar 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.