Configurazione di un ambiente di sviluppo

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina descrive come configurare il tuo ambiente di sviluppo per creare ed eseguire il deployment dell'API di backend utilizzando Cloud Endpoints Frameworks per l'ambiente standard di App Engine. Questa pagina utilizza l'esempio di codice Schemi di Framework Endpoint 2.0 per spiegare il software di base e i componenti necessari per iniziare.

Potresti utilizzare 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 2.0.

Per comprendere meglio i passaggi necessari per eseguire il deployment di un'API di esempio utilizzando endpoint Frameworks, consulta il tutorial Introduzione ai framework di endpoint su App Engine.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  4. Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

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

Installazione e configurazione del software richiesto

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

    Maven

    1. Scarica Apache Maven versione 3.3.9 o successive
    2. Installa e configura Maven per l'ambiente di sviluppo locale.

    Gradle

  3. Scarica e inizializza Google Cloud CLI.
  4. Esegui questi comandi:
    1. Assicurati che l'interfaccia a riga di comando gcloud sia autorizzata 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 all'ultima versione di Google Cloud SDK e a tutti i componenti:
      gcloud components update
  5. Crea un'applicazione App Engine:
    1. Imposta il progetto predefinito come ID del tuo progetto Google Cloud:
      gcloud config set project YOUR_PROJECT_ID

      Sostituisci YOUR_PROJECT_ID con l'ID del tuo progetto Google Cloud. Se hai altri progetti Google Cloud e vuoi utilizzare gcloud per gestirli, consulta la pagina sulla gestione delle configurazioni dell'interfaccia a riga di comando gcloud.

    2. Seleziona la regione in cui vuoi creare la tua applicazione App Engine. Consulta le località di App Engine per l'elenco delle regioni.
    3. Creare un'applicazione App Engine. Sostituisci YOUR_PROJECT_ID con l'ID progetto Google Cloud e YOUR_REGION con l'area geografica in cui vuoi creare l'applicazione App Engine.
        gcloud app create \
        --project=YOUR_PROJECT_ID \
        --region=YOUR_REGION
      

Recupero dell'esempio di scheletro di Endpoints Frameworks

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

  1. Clona il repository di esempio nella macchina locale:

     git clone https://github.com/GoogleCloudPlatform/java-docs-samples
    
  2. Passa alla directory contenente l'esempio dello scheletro di Framework di endpoint:

     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 una classe vuota che puoi utilizzare per iniziare a scrivere l'API. Per iniziare, consulta l'esempio di eco per trovare un codice campione.

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

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

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

    • build.gradle contiene le informazioni su progetto e configurazione utilizzate da Gradle per creare il progetto 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 inclusi nel codice di esempio. Ad eccezione dell'inserimento dell'ID progetto Google Cloud in modo che possa essere utilizzato nel nome host, i file di build sono pronti per iniziare a creare l'API.

Informazioni sulla configurazione minima

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

Maven

Dipendenze minime

Di seguito sono riportate le dipendenze minime necessarie per iniziare a utilizzare pom.xml:

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

  • La dipendenza endpoints-framework contiene le classi necessarie per la creazione dell'API.
  • È necessaria l'<atrack-type="tasks" l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="8uk1g2YxVmQFExiHWQoDVLU3uURKQq2GHK/Q1ZkBJNo=" track-metadata-position="body" track-name"> nome dell'ambiente di monitoraggio dell'app</a>
  • Per creare un servlet è necessario il pacchetto standard javax.servlet.
  • Il pacchetto javax.inject standard è obbligatorio per supportare l'inserimento delle dipendenze.

Applicare i plug-in

Per consentire l'utilizzo di questi plug-in 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.3.2</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.4.4</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>
  • maven-war-plugin estende il plug-in java per aggiungere il supporto dell'assemblaggio di un'applicazione web.
  • L'elemento appengine-maven-plugin è necessario per eseguire l'API su App Engine.
  • Il endpoints-framework-maven-plugin fornisce attività e configurazioni per creare progetti Endpoints Frameworks.

Gradle

Dipendenze plug-in

Di seguito sono riportati i plug-in necessari per creare la tua 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.4.3'
  }
}

Applicare i plug-in

Vengono applicati i seguenti plug-in per abilitarli nello script di build Gradle:

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 compilation specifica per Java e passi di build al tuo progetto.
  • Il plug-in war estende il plug-in java per aggiungere il supporto dell'assemblaggio di un'applicazione web.
  • Il plug-in endpoints-framework-server fornisce supporto lato server al plug-in Endpoints Frameworks Gradle.
  • Per eseguire l'API su App Engine è necessario il plug-in appengine.

Dipendenze 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.5'

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

Definisci il nome host per il tuo servizio

I framework di endpoint utilizzano nomi compatibili con DNS per identificare in modo univoco i servizi. Dato che gli ID progetto Google Cloud sono univoci in tutto il mondo, devi utilizzare il tuo ID progetto Google Cloud come parte del nome del servizio della tua API.

Devi aggiungere il tuo ID progetto Google Cloud ai file di build per configurare il nome host per il tuo servizio. Il nome host deve avere il seguente formato:

YOUR_PROJECT_ID.appspot.com

Quando esegui il deployment dell'API in App Engine, viene creata automaticamente una voce DNS con un nome in formato YOUR_PROJECT_ID.appspot.com. Il nome host è sia il nome del servizio Cloud Endpoints che il nome di dominio utilizzato per inviare le 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 l'ID del progetto Google Cloud.

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 sul tuo ID progetto Google Cloud. Ad esempio: def projectId = 'example-project-12345'

Configurazione del servlet endpoint

Il servlet endpoint gestisce le richieste in entrata e le inoltra al servizio di backend in esecuzione su App Engine. Il servlet degli endpoint deve essere gestito dagli endpoint per la tua API.

Per maggiori informazioni su web.xml, consulta la pagina Il descrittore del 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 la configurazione dell'ambiente standard di App Engine al momento del deployment dell'API. Per ulteriori informazioni, consulta il riferimento appengine-web.xml.

<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