Configurazione di un ambiente di sviluppo

In questa pagina viene descritto come configurare l'ambiente di sviluppo per creare esegui il deployment dell'API backend utilizzando Cloud Endpoints Frameworks per App Engine nell'ambiente standard. Questa pagina utilizza il parametro Scheleton di Endpoint Framework versione 2.0 di esempio di codice per spiegare il software di base e i componenti necessari per iniziare.

È consigliabile utilizzare lo endpoints-skeleton-archetype o hello-endpoints-archetype descritti in Utilizzo di Apache Maven e del plug-in App Engine (basato su Google Cloud CLI) per creare un nuovo progetto Endpoints Frameworks versione 2.0.

Per comprendere meglio i passaggi necessari per eseguire il deployment di un'API di esempio utilizzando Endpoint Frameworks, guarda il tutorial Guida introduttiva a Endpoints Frameworks su App Engine.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Prendi nota dell'ID progetto Google Cloud perché sarà necessario in seguito.

Installazione e configurazione del software richiesto

  1. Se non hai installato Java 8, scarica il Java Development Kit (JDK) da sito di Oracle e installarlo.
  2. Installa Maven o Gradle:

    Maven

    1. Scarica Apache Maven 3.3.9 o versioni successive
    2. Installa e configurare Maven per il tuo ambiente di sviluppo locale.

    Gradle

  3. Scarica e inizializza Google Cloud CLI.
  4. Esegui questi comandi:
    1. Assicurati che gcloud CLI sia autorizzato ad accedere ai tuoi dati e servizi su Google Cloud:
      gcloud auth login
    2. Utilizza le credenziali predefinite dell'applicazione:
      gcloud auth application-default login
    3. Installa il componente Google Cloud SDK app-engine-java:
      gcloud components install app-engine-java
    4. Esegui l'aggiornamento alla versione più recente di Google Cloud SDK e di tutti i componenti:
      gcloud components update
  5. Crea un'applicazione App Engine:
    1. Imposta il progetto predefinito sull'ID progetto Google Cloud:
      gcloud config set project YOUR_PROJECT_ID

      Sostituisci YOUR_PROJECT_ID con il tuo Google Cloud dell'ID progetto. Se hai altri progetti Google Cloud e vuoi usa gcloud per gestirli, consulta Gestione configurazioni gcloud CLI.

    2. Seleziona la regione in cui vuoi creare la tua applicazione App Engine. Consulta: Località di App Engine per un elenco regioni.
    3. Creare un'applicazione App Engine. Sostituisci YOUR_PROJECT_ID con il tuo progetto Google Cloud e YOUR_REGION con la regione in cui vuoi che venga Applicazione App Engine creata.
        gcloud app create \
        --project=YOUR_PROJECT_ID \
        --region=YOUR_REGION
      

Recupero dello scheletro di esempio di Endpoints Frameworks

L'esempio di scheletro della versione 2.0 di Endpoints Frameworks contiene gli script di build necessari per Maven e Gradle. Contiene anche i campi obbligatori per iniziare a creare la tua prima API.

  1. Clona il repository di esempio sulla tua macchina locale:

     git clone https://github.com/GoogleCloudPlatform/java-docs-samples
    
  2. Passa alla directory contenente i framework di Endpoints esempio di scheletro:

     cd java-docs-samples/appengine-java8/endpoints-v2-skeleton/
    

    L'esempio ha la seguente struttura di directory:

    Layout di esempio dello scheletro di Endpoints Frameworks

    • MyApi.java contiene un corso vuoto che puoi usare per iniziare scrivere l'API. Consulta le esempio di echo per trovare un codice campione che ti aiuti a iniziare.

    • web.xml è un file standard utilizzato per configurare servlet.

    • appengine-web.xml le informazioni necessarie per il deployment dell'API nell'ambiente standard di App Engine utilizzando Java 8.

    • pom.xml contiene le informazioni sul progetto e sulla configurazione utilizzate da Maven per creare ed eseguire il deployment dell'API in App Engine.

    • build.gradle contiene le informazioni sul progetto e sulla configurazione utilizzate da Gradle per creare ed eseguire il deployment dell'API in App Engine.

Configurazione dei file di build

Questa sezione descrive i file Maven pom.xml e Gradle build.gradle incluso nel codice campione. Tranne che per l'inserimento nel tuo progetto Google Cloud per poter essere utilizzato nel nome host, i file di build sono pronti per essere per iniziare a creare la tua API.

Informazioni sulla configurazione minima

Questa sezione descrive la configurazione minima necessaria nel file di build.

Maven

Dipendenze minime

Di seguito sono indicate le dipendenze minime richieste pom.xml per iniziare:

<dependencies>
  <!-- Compile/runtime dependencies -->
  <dependency>
    <groupId>com.google.endpoints</groupId>
    <artifactId>endpoints-framework</artifactId>
    <version>2.2.2</version>
  </dependency>
  <dependency>
    <groupId>com.google.appengine</groupId>
    <artifactId>appengine-api-1.0-sdk</artifactId>
    <version>2.0.23</version>
  </dependency>
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <type>jar</type>
    <scope>provided</scope>
  </dependency>
  <dependency>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
    <version>1</version>
  </dependency>
</dependencies>

Applicare plug-in

Per abilitarli vengono applicati i seguenti plug-in:

<build>
  <!-- for hot reload of the web application-->
  <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.4.0</version>
      <configuration>
        <webResources>
          <resources>
            <directory>${basedir}/src/main/webapp/WEB-INF</directory>
            <filtering>true</filtering>
            <targetPath>WEB-INF</targetPath>
          </resources>
        </webResources>
      </configuration>
    </plugin>
    <plugin>
      <groupId>com.google.cloud.tools</groupId>
      <artifactId>appengine-maven-plugin</artifactId>
      <version>2.5.0</version>
      <configuration>
        <!-- deploy configuration -->
        <projectId>GCLOUD_CONFIG</projectId>
        <version>GCLOUD_CONFIG</version>
      </configuration>
    </plugin>
    <plugin>
      <groupId>com.google.cloud.tools</groupId>
      <artifactId>endpoints-framework-maven-plugin</artifactId>
      <version>2.1.0</version>
      <configuration>
        <!-- plugin configuration -->
        <!--
        You must replace YOUR_PROJECT_ID with your
        Google Cloud Project Id
      -->
        <hostname>YOUR_PROJECT_ID.appspot.com</hostname>
      </configuration>
    </plugin>
  </plugins>
</build>

Gradle

Dipendenze del plug-in

Di seguito vengono mostrati i plug-in necessari per creare l'API:

buildscript {
  repositories {
    mavenCentral()
  }

  dependencies {
    classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:2.1.0'
    classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.5.0'
  }
}

Applicare plug-in

I seguenti plug-in vengono applicati per attivarli nel tuo Gradle script di build:

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'com.google.cloud.tools.endpoints-framework-server'
apply plugin: 'com.google.cloud.tools.appengine'

  • Il plug-in java aggiunge la compilazione e la creazione specifiche per Java passaggi al tuo progetto.
  • Il plug-in war estende il plug-in java a aggiungere il supporto per assemblare un'applicazione web.
  • Il plug-in endpoints-framework-server fornisce supporto lato server ad Endpoints Frameworks Gradle .
  • Per eseguire l'API è necessario il plug-in appengine su App Engine.

Dipendenze del progetto

Il progetto utilizza le seguenti dipendenze:

dependencies {
    compile 'com.google.endpoints:endpoints-framework:2.2.2'
    compile 'com.google.appengine:appengine-api-1.0-sdk:2.0.23'

    compile 'javax.inject:javax.inject:1'
    compileOnly 'javax.servlet:javax.servlet-api:3.1.0'
}

Definizione del nome host per il servizio

Endpoints Frameworks utilizza nomi compatibili con DNS per identificare in modo univoco i servizi di machine learning. Poiché è garantito che gli ID progetto di Google Cloud siano globali, univoco, devi utilizzare il tuo ID progetto Google Cloud come parte del codice il nome del servizio.

Per configurare, devi aggiungere l'ID progetto Google Cloud ai file di build il nome host del tuo servizio. Il nome host deve essere nel seguente formato:

YOUR_PROJECT_ID.appspot.com

Quando esegui il deployment dell'API in App Engine, viene visualizzata una voce DNS con un nome nel il formato YOUR_PROJECT_ID.appspot.com viene creato automaticamente. Il nome host è sia il nome del servizio Cloud Endpoints sia il nome di dominio che utilizzi per inviare richieste alla tua API.

Maven

<plugin>
  <groupId>com.google.cloud.tools</groupId>
  <artifactId>endpoints-framework-maven-plugin</artifactId>
  <version>2.1.0</version>
  <configuration>
    <!-- plugin configuration -->
    <!--
    You must replace YOUR_PROJECT_ID with your
    Google Cloud Project Id
  -->
    <hostname>YOUR_PROJECT_ID.appspot.com</hostname>
  </configuration>
</plugin>

Nel campo hostname, sostituisci YOUR_PROJECT_ID con il tuo progetto Google Cloud ID.

Gradle

// You must replace YOUR_PROJECT_ID with your Google Cloud Project Id
def projectId = 'YOUR_PROJECT_ID'

endpointsServer {
  // Endpoints Framework Plugin server-side configuration
  hostname = "${projectId}.appspot.com"
}

Imposta la variabile projectID su Google Cloud dell'ID progetto. Ad esempio: def projectId = 'example-project-12345'

Configurazione del servlet di Endpoints

Il servlet di Endpoints gestisce le richieste in entrata e le inoltra al servizio di backend in esecuzione su App Engine. La Il servlet di Endpoints è obbligatorio per l'utilizzo dell'API gestite da Endpoints.

Per ulteriori informazioni su web.xml, vedi Il descrittore di deployment: web.xml.

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <!-- Wrap the backend with Endpoints Frameworks v2. -->
    <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.skeleton.MyApi</param-value>
        </init-param>
    </servlet>
    <!-- Route API method requests to the backend. -->
    <servlet-mapping>
        <servlet-name>EndpointsServlet</servlet-name>
        <url-pattern>/_ah/api/*</url-pattern>
    </servlet-mapping>
</web-app>

Configurazione del deployment di App Engine

Il file appengine-web.xml viene utilizzato per definire lo standard di App Engine dell'ambiente al momento del deployment dell'API. Consulta: Riferimento appengine-web.xml per ulteriori informazioni.

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <runtime>java8</runtime>
    <threadsafe>true</threadsafe>

    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
    </system-properties>
</appengine-web-app>

Passaggi successivi