Entwicklungsumgebung einrichten

Auf dieser Seite wird beschrieben, wie Sie Ihre Entwicklungsumgebung zum Erstellen und Bereitstellen Ihrer Back-End-API mit Cloud Endpoints Frameworks für die App Engine-Standardumgebung einrichten. Auf dieser Seite wird das Codebeispiel Endpoints Frameworks Version 2.0 verwendet, um die grundlegende Software und Komponenten zu erläutern, die Sie für den Einstieg benötigen.

Sie können die endpoints-skeleton-archetype oder die hello-endpoints-archetype verwenden, die unter Apache Maven und das Google Cloud-Befehlszeilentool (Google Cloud CLI-basiert) beschrieben wird, um ein neues Endpoints Frameworks-Projekt der Version 2.0 zu erstellen.

Die Schritte zum Bereitstellen einer Beispiel-API mit Endpoints Frameworks werden in der Anleitung Erste Schritte mit Endpoints Frameworks in App Engine beschrieben.

Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  6. Notieren Sie sich die Google Cloud-Projekt-ID, da sie später benötigt wird.

Erforderliche Software installieren und konfigurieren

  1. Wenn Sie Java 8 nicht installiert haben, laden Sie das Java Development Kit (JDK) von der Oracle-Website herunter und installieren Sie es.
  2. Installieren Sie entweder Maven oder Gradle:

    Logo: Maven

    1. Apache Maven Version 3.3.9 oder höher herunterladen
    2. Installieren und konfigurieren Sie Maven für Ihre lokale Entwicklungsumgebung.

    Logo: Gradle

  3. Laden Sie die Google Cloud-Befehlszeile herunter und initialisieren Sie sie.
  4. Führen Sie folgende Befehle aus:
    1. Achten Sie darauf, dass die gcloud-Befehlszeile für den Zugriff auf Ihre Daten und Dienste in Google Cloud berechtigt ist:
      gcloud auth login
    2. Verwenden Sie die Standardanmeldedaten für Anwendungen:
      gcloud auth application-default login
    3. Installieren Sie die Google Cloud SDK-Komponente app-engine-java:
      gcloud components install app-engine-java
    4. Aktualisieren Sie das Google Cloud SDK und alle Komponenten auf die neueste Version:
      gcloud components update
  5. Erstellen Sie eine App Engine-Anwendung:
    1. Legen Sie als Standardprojekt Ihre Google Cloud-Projekt-ID fest:
      gcloud config set project YOUR_PROJECT_ID

      Ersetzen Sie YOUR_PROJECT_ID durch Ihre Google Cloud-Projekt-ID. Wenn Sie weitere Google Cloud-Projekte mit gcloud verwalten möchten, lesen Sie Befehlszeilenkonfigurationen für gcloud verwalten.

    2. Wählen Sie die Region aus, in der Sie Ihre App Engine-Anwendung erstellen möchten. Eine Liste der Regionen finden Sie unter App Engine-Standorte.
    3. App Engine-Anwendung erstellen Ersetzen Sie YOUR_PROJECT_ID durch Ihre Google Cloud-Projekt-ID und YOUR_REGION durch die Region, in der die App Engine-Anwendung erstellt werden soll.
        gcloud app create \
        --project=YOUR_PROJECT_ID \
        --region=YOUR_REGION
      

Endpoints Frameworks-Beispielbeispiel abrufen

Das Basisbeispiel für Endpoints Frameworks 2.0 enthält die erforderlichen Build-Skripts für Maven und Gradle. Außerdem enthält es die erforderlichen Dateien, um Ihre erste API zu erstellen.

  1. Klonen Sie das Beispiel-Repository auf Ihren lokalen Computer:

     git clone https://github.com/GoogleCloudPlatform/java-docs-samples
    
  2. Wechseln Sie in das Verzeichnis, das das Endpoints Frameworks-Skelettbeispiel enthält:

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

    Das Beispiel hat die folgende Verzeichnisstruktur:

    Strukturbeispiel für Endpoints Frameworks

    • MyApi.java enthält eine leere Klasse, mit der Sie Ihre API schreiben können. Im Echo-Beispiel finden Sie Beispielcode, um Ihnen den Einstieg zu erleichtern.

    • web.xml ist eine Standarddatei, die zum Konfigurieren eines Servlets verwendet wird.

    • appengine-web.xml definiert Informationen, die zum Bereitstellen der API in der App Engine-Standardumgebung mit Java 8 erforderlich sind.

    • pom.xml enthält Projekt- und Konfigurationsinformationen, mit denen Maven das Projekt erstellt und die API in App Engine bereitstellt.

    • build.gradle enthält Projekt- und Konfigurationsinformationen, mit denen Gradle das Projekt erstellt und die API in App Engine bereitstellt.

Build-Dateien konfigurieren

In diesem Abschnitt werden die Maven-Dateien pom.xml und Gradle build.gradle beschrieben, die im Beispielcode enthalten sind. Mit Ausnahme der Eingabe der Google Cloud-Projekt-ID, damit sie im Hostnamen verwendet werden kann, sind die Build-Dateien bereit, mit dem Erstellen der API zu beginnen.

Mindestkonfiguration

In diesem Abschnitt wird die Mindestkonfiguration beschrieben, die in Ihrer Build-Datei erforderlich ist.

Logo: Maven

Mindestabhängigkeiten

Im Folgenden finden Sie die Mindestabhängigkeiten, die in pom.xml erforderlich sind, um zu beginnen:

<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.3</version>
  </dependency>
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <type>jar</type>
    <scope>provided</scope>
  </dependency>
  <dependency>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
    <version>1</version>
  </dependency>
</dependencies>

  • Die Abhängigkeit endpoints-framework enthält die erforderlichen Klassen zum Erstellen Ihrer API.
  • Du benötigst den l“
  • Das Standardpaket javax.servlet ist zum Erstellen eines Servlets erforderlich.
  • Das Standardpaket javax.inject ist erforderlich, um die Abhängigkeitsinjektion zu unterstützen.

Plug-ins anwenden

Sie werden mit den folgenden Plug-ins aktiviert:

<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.1</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>
  • Das maven-war-plugin erweitert das java-Plug-in um Unterstützung zum Zusammenstellen einer Webanwendung.
  • Der appengine-maven-plugin ist erforderlich, um die API in App Engine auszuführen.
  • Der endpoints-framework-maven-plugin enthält Aufgaben und Konfigurationen zum Erstellen von Endpoints Frameworks-Projekten.

Logo: Gradle

Plug-in-Abhängigkeiten

Nachfolgend sehen Sie die Plug-ins, die zum Erstellen Ihrer API erforderlich sind:

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.2'
  }
}

Plug-ins anwenden

Die folgenden Plug-ins werden angewendet, um sie in Ihrem Gradle-Build-Skript zu aktivieren:

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

  • Das Plug-in java fügt Ihrem Projekt Java-spezifische Kompilierungs- und Build-Schritte hinzu.
  • Das Plug-in war erweitert das Plug-in java um Unterstützung beim Zusammenstellen einer Webanwendung.
  • Das Plug-in endpoints-framework-server bietet serverseitige Unterstützung für das Endpoints Frameworks-Gradle-Plug-in.
  • Das Plug-in appengine ist erforderlich, um die API in App Engine auszuführen.

Projektabhängigkeiten

Das Projekt verwendet die folgenden Abhängigkeiten:

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

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

Hostnamen für Ihren Dienst definieren

Endpoints Frameworks verwendet DNS-kompatible Namen, um Dienste eindeutig zu identifizieren. Da die Google Cloud-Projekt-IDs garantiert global eindeutig sind, sollten Sie Ihre Google Cloud-Projekt-ID als Teil des Dienstnamens für Ihre API verwenden.

Sie müssen die Google Cloud-Projekt-ID den Build-Dateien hinzufügen, um den Hostnamen für Ihren Dienst zu konfigurieren. Der Hostname muss das folgende Format haben:

YOUR_PROJECT_ID.appspot.com

Wenn Sie die API in App Engine bereitstellen, wird automatisch ein DNS-Eintrag mit einem Namen im Format YOUR_PROJECT_ID.appspot.com erstellt. Der Hostname ist sowohl der Name des Cloud Endpoints-Dienstes als auch der Domainname, den Sie zum Senden von Anfragen an Ihre API verwenden.

Logo: 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>

Ersetzen Sie im Feld hostname den Platzhalter YOUR_PROJECT_ID durch Ihre Google Cloud-Projekt-ID.

Logo: 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"
}

Legen Sie für die Variable projectID Ihre Google Cloud-Projekt-ID fest. Beispiel: def projectId = 'example-project-12345'

Endpoints-Servlet konfigurieren

Das Endpoints-Servlet verarbeitet eingehende Anfragen und leitet sie an den Back-End-Dienst weiter, der in App Engine ausgeführt wird. Das Endpoints-Servlet ist erforderlich, damit die API von Endpoints verwaltet wird.

Weitere Informationen zu web.xml finden Sie im Deployment-Deskriptor 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>

App Engine-Bereitstellung konfigurieren

Mit der Datei appengine-web.xml wird die Konfiguration der App Engine-Standardumgebung beim Bereitstellen der API definiert. Weitere Informationen finden Sie in der Referenz zu 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>

Nächste Schritte