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. Diese Seite verwendet das Basisbeispiel für Endpoints Frameworks Version 2.0 Code, um die grundlegende Software und Komponenten zu erläutern, die Sie für den Einstieg benötigen.

Ein neues Endpoints Frameworks-Projekt der Version 2.0 können Sie mit den endpoints-skeleton-archetype oder den hello-endpoints-archetype erstellen, die unter Apache Maven und das (Google Cloud CLI-basierte) App Engine-Plug-in verwenden beschrieben werden.

Weitere Informationen zu den erforderlichen Schritten zum Bereitstellen einer Beispiel-API mit Endpoints Frameworks finden Sie in der Anleitung Erste Schritte mit Endpoints Frameworks in App Engine.

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Konto haben Google Cloud, erstellen Sie ein Konto, um die Leistung 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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify 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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Notieren Sie die Google Cloud Projekt-ID für die nächsten Schritte.

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:

    Maven

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

    Gradle

  3. Laden Sie die Google Cloud CLI herunter und initialisieren Sie sie.
  4. Führen Sie die folgenden Befehle aus:
    1. Achten Sie darauf, dass die gcloud CLI zum Zugriff auf Ihre Daten und Dienste in berechtigt ist Google Cloud:
      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 für das 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 gcloud CLI-Konfigurationen 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. Erstellen Sie eine App Engine-Anwendung. 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

Basisbeispiel für Endpoints Frameworks abrufen

Das Basisbeispiel für Endpoints Frameworks Version 2.0 enthält die erforderlichen Build-Skripts für Maven und Gradle. Es enthält auch die erforderlichen Dateien, um eine 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 Basisbeispiel für Endpoints Frameworks enthält:

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

    Das Beispiel hat die folgende Verzeichnisstruktur:

    Layout des Basisbeispiels für Endpoints Frameworks

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

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

    • appengine-web.xml definiert Informationen, die zum Bereitstellen der API in der App Engine-Standardumgebung mithilfe von 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 im Beispielcode enthaltene Maven-Datei pom.xml und die Gradle-Datei build.gradle beschrieben. Abgesehen von der Eingabe Ihrer Google Cloud Projekt ID, damit diese im Hostnamen verwendet werden kann, sind die Build-Dateien gebrauchsfertig zum Erstellen Ihrer API.

Minimale Konfiguration

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

Maven

Minimale Abhängigkeiten

Hier sehen Sie die Mindestabhängigkeiten, die in Ihrer pom.xml zum Einstieg erforderlich sind:

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

  • Die endpoints-framework Abhängigkeit enthält die erforderlichen Klassen zum Erstellen Ihrer API.
  • Sie benötigen das App Engine Standard API SDK (appengine-api-sdk), um Ihr Projekt in der App Engine-Standardumgebung bereitzustellen.
  • Das Standardpaket javax.servlet ist zum Erstellen eines Servlets erforderlich.
  • Das Standardpaket javax.inject ist zur Unterstützung der Abhängigkeitsinjektion erforderlich.

Plug-ins anwenden

Die folgenden Plug-ins werden angewendet, um sie zu aktivieren:

<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>
  • Das maven-war-plugin-Plug-in erweitert das java-Plug-in um Unterstützung beim Assemblieren einer Webanwendung.
  • Das appengine-maven-plugin wird zum Ausführen der API in App Engine benötigt.
  • Das endpoints-framework-maven-plugin stellt Aufgaben und Konfigurationen zum Erstellen von Endpoints Frameworks-Projekten bereit.

Gradle

Plug-in-Abhängigkeiten

Im Folgenden sind die Plug-ins aufgeführt, 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.5.0'
  }
}

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 java Plug-in erweitert Ihr Projekt um Java-spezifische Kompilierungs- und Build Schritte.
  • Das war-Plug-in erweitert das java-Plug-in um Unterstützung beim Assemblieren einer Webanwendung.
  • Das endpoints-framework-server-Plug-in bietet serverseitige Unterstützung für das Endpoints Frameworks-Gradle-Plug-in.
  • Das appengine-Plug-in ist erforderlich, um die API in App Engine auszuführen.

Projektabhängigkeiten

Die folgenden Abhängigkeiten werden vom Projekt verwendet:

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

Hostname für Ihren Dienst definieren

Endpoints Frameworks verwendet für die eindeutige Identifizierung von Diensten DNS-kompatible Namen. Da Google Cloud Projekt-IDs garantiert global eindeutig sind, sollten Sie Ihre Google Cloud Projekt-ID als Teil des Dienstnamens Ihrer API verwenden.

Sie müssen Ihre Google Cloud Projekt-ID in die Build-Dateien einfügen, um den Hostnamen für Ihren Dienst zu konfigurieren. Der Hostname muss folgendes 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.

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 die Variable YOUR_PROJECT_ID durch Ihre Google Cloud Projekt 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"
}

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 auf App Engine ausgeführt wird. Das Endpoints-Servlet ist erforderlich, damit Ihre API von Endpoints verwaltet werden kann.

Weitere Informationen zu web.xml finden Sie unter Bereitstellungsdeskriptor: 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

Die Datei appengine-web.xml wird beim Bereitstellen der API dazu verwendet, die Konfiguration der App Engine-Standardumgebung zu definieren. Weitere Informationen finden Sie in der appengine-web.xml Referenz.

<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