Migrar para a versão 2.0 dos Cloud Endpoints Frameworks para o App Engine

Esta página descreve a migração de uma aplicação Cloud Endpoints versão 1.0 existente para os Frameworks de Endpoints para o App Engine em Java.

Vantagens

A nova estrutura oferece várias vantagens, incluindo:

  • Latência do pedido reduzida.
  • Melhor integração com as funcionalidades do App Engine, como domínios personalizados.
  • Apoio técnico oficial para configurações do Guice.
  • Opcionalmente, novas funcionalidades de gestão de APIs.

A versão 2.0 do Endpoints Frameworks não afeta as interfaces da sua API. Os clientes existentes continuam a funcionar após a migração sem alterações ao código do lado do cliente.

Funcionalidades e ferramentas atualmente excluídas

As seguintes funcionalidades não estão disponíveis atualmente. Se precisar de alguma destas opções, envie um pedido de funcionalidade.

  • Protocolo JSON-RPC, que é necessário para clientes iOS antigos. Para criar clientes iOS para a sua API do Endpoints Frameworks versão 2.0, recomendamos que use a biblioteca de cliente Objective-C das APIs Google para APIs REST.
  • ETags automáticos
  • Campos de tipo automáticos
  • Integração de IDE
  • fields respostas parciais
  • Criação automática do método da API PATCH

Além disso, o suporte do Android Studio para a versão 1.0 dos Endpoints não é atualmente suportado para a versão 2.0.

Migrar para a versão 2.0 dos frameworks de Endpoints

A versão 2.0 dos Endpoints Frameworks foi movida para artefactos Maven no grupo com.google.endpoints. O JAR base obrigatório está no artefacto endpoints-framework. Se quiser usar a configuração do Guice, adicione o artefacto endpoints-framework-guice.

As instruções seguintes fornecem um exemplo de como migrar da versão 1.0 dos Frameworks de Endpoints para a versão 2.0 dos Frameworks de Endpoints através de um documento de descoberta:

  1. Transfira e inicialize a CLI do Google Cloud.
  2. Execute os seguintes comandos:
    1. Certifique-se de que a CLI gcloud está autorizada a aceder aos seus dados e serviços em Google Cloud:
      gcloud auth login
    2. Usar credenciais padrão da aplicação:
      gcloud auth application-default login
    3. Instale o componente app-engine-java do SDK do Google Cloud:
      gcloud components install app-engine-java
    4. Atualize para a versão mais recente do SDK do Google Cloud e de todos os componentes:
      gcloud components update

Migre através do Maven ou do Gradle

Maven

  1. Remova a dependência antiga, que é o artefacto appengine-endpoints:
    <dependency>
          <groupId>com.google.appengine</groupId>
          <artifactId>appengine-endpoints</artifactId>
          <version>1.9.53</version>
    </dependency>
  2. Adicione a nova dependência do Endpoints Frameworks:
    <dependency>
        <groupId>com.google.endpoints</groupId>
        <artifactId>endpoints-framework</artifactId>
        <version>2.2.1</version>
    </dependency>
  3. Adicione o novo plug-in Endpoints Frameworks e defina o nome de anfitrião para um documento de descoberta gerado:
    <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>endpoints-framework-maven-plugin</artifactId>
        <version>1.0.2</version>
        <configuration>
            <!-- plugin configuration -->
            <hostname>YOUR-PROJECT-ID.appspot.com</hostname>
        </configuration>
    </plugin>
  4. Adicione o novo plugin do App Engine Maven:
    <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>1.3.2</version>
        <configuration>
            <!-- deploy configuration -->
        </configuration>
    </plugin>
  5. Atualize o ponto de entrada da API no ficheiro web.xml do seu projeto:
    • Mudar o nome de todas as ocorrências de SystemServiceServlet para EndpointsServlet
    • Substitua todas as ocorrências do caminho /_ah/spi/ pelo novo caminho obrigatório /_ah/api/

    A imagem seguinte mostra o conteúdo do web.xml antes e depois da migração:

    Antes da migração

    Endpoints Frameworks versão 1.0 web.xml:
    <servlet>
        <servlet-name>SystemServiceServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value>com.example.helloendpoints.Greetings</param-value>
        </init-param>
        <init-param>
            <param-name>restricted</param-name>
            <param-value>false</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>SystemServiceServlet</servlet-name>
        <url-pattern>/_ah/spi/*</url-pattern>
    </servlet-mapping>

    Após a migração

    Frameworks de Endpoints versão 2.0 web.xml:
    <servlet>
        <servlet-name>EndpointsServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.EndpointsServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value>com.example.helloendpoints.Greetings</param-value>
        </init-param>
        <init-param>
            <param-name>restricted</param-name>
            <param-value>false</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>EndpointsServlet</servlet-name>
        <url-pattern>/_ah/api/*</url-pattern>
    </servlet-mapping>

  6. Depois de modificar as dependências, limpe o projeto:
    mvn clean
  7. Pode gerar um documento de deteção:
    mvn endpoints-framework:discoveryDocs
    Saiba mais sobre os frameworks de pontos finais do Maven objetivos do plug-in.
  8. Pode implementar um projeto: