API-Verwaltung hinzufügen

Cloud Endpoints Frameworks bietet API-Verwaltungsfunktionen, die mit den vom Extensible Service Proxy (ESP) für Cloud Endpoints bereitgestellten Funktionen vergleichbar sind. In Endpoints Frameworks ist ein API-Gateway eingebunden, das alle Anfragen abfängt und soweit notwendig überprüft, z. B. durch Authentifizierung, bevor sie an das API-Back-End weitergeleitet werden. Wenn das Back-End antwortet, erfasst und meldet Endpoints Frameworks telemetrische Messwerte. Sie können Messwerte für Ihre API auf der Seite Endpoints > Dienste in der Google Cloud Console ansehen.

In Endpoints Frameworks sind unter anderem die folgenden API-Verwaltungsfunktionen verfügbar:

Damit Ihre API von Endpoints verwaltet werden kann, müssen Sie ein OpenAPI-Dokument bereitstellen, das Ihre API mit Version 2.0 der OpenAPI-Spezifikation beschreibt. Auf dieser Seite wird beschrieben, wie Sie ein OpenAPI-Dokument generieren und bereitstellen, mit dem Endpoints Ihre API verwalten kann.

Wenn Sie keine API-Verwaltung einrichten, liefert Ihre API weiterhin Anfragen, erscheint aber nicht auf der Seite Endpoints > Dienste in der Cloud Console und die von Endpoints bereitgestellten Funktionen wie Logging, Monitoring und das Festlegen von Kontingenten sind nicht verfügbar.

So fügen Sie der API Verwaltungsfunktionen hinzu:

  1. Richten Sie Ihre Maven-Datei pom.xml oder Ihre Gradle-Datei build.gradle wie in Konfigurieren der Build-Dateien beschrieben ein.

  2. Stellen Sie sicher, dass Sie die Google Cloud-Projekt-ID in den Build-Dateien festgelegt haben.

    Maven

    Suchen Sie nach <endpoints.project.id> und ersetzen Sie YOUR_PROJECT_ID durch Ihre Google Cloud-Projekt-ID. Beispiel:

    <endpoints.project.id>example-project-12345</endpoints.project.id>

    <endpoints.project.id>YOUR_PROJECT_ID</endpoints.project.id>

    Gradle

    1. Suchen Sie nach def projectId und ersetzen Sie YOUR_PROJECT_ID durch Ihre Google Cloud-Projekt-ID. Beispiel:

      def projectId = 'example-project-12345'

    2. Achten Sie darauf, dass die Datei build.gradle die Aufgabe replaceProjectId enthält, mit der die Projekt-ID in den Dateien appengine-web.xml und web.xml festgelegt wird.

      task replaceProjectId(type: Copy) {
          from 'src/main/webapp/WEB-INF/'
          include '*.xml'
          into "build/exploded-${archivesBaseName}/WEB-INF"
          expand(endpoints:[project:[id:projectId]])
          filteringCharset = 'UTF-8'
      }

  3. Fügen Sie in der Datei web.xml Ihres API-Projekts die Servlet-Filterkonfiguration für die API-Verwaltung hinzu:

    <!-- Add a filter that fetches the service config from service management. -->
    <filter>
        <filter-name>endpoints-api-configuration</filter-name>
        <filter-class>com.google.api.control.ServiceManagementConfigFilter</filter-class>
    </filter>
    
    <!-- Add a filter that performs Endpoints logging and monitoring. -->
    <filter>
        <filter-name>endpoints-api-controller</filter-name>
        <filter-class>com.google.api.control.extensions.appengine.GoogleAppEngineControlFilter</filter-class>
        <init-param>
            <param-name>endpoints.projectId</param-name>
            <param-value>${endpoints.project.id}</param-value>
        </init-param>
        <init-param>
            <param-name>endpoints.serviceName</param-name>
            <param-value>${endpoints.project.id}.appspot.com</param-value>
        </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>endpoints-api-configuration</filter-name>
        <servlet-name>EndpointsServlet</servlet-name>
    </filter-mapping>
    
    <filter-mapping>
        <filter-name>endpoints-api-controller</filter-name>
        <servlet-name>EndpointsServlet</servlet-name>
    </filter-mapping>
  4. Ändern Sie die Build-Konfiguration Ihres API-Projekts:

    Maven

    1. Fügen Sie die Abhängigkeiten der API-Verwaltung hinzu:

      <dependency>
        <groupId>com.google.endpoints</groupId>
        <artifactId>endpoints-management-control-appengine-all</artifactId>
        <version>1.0.12</version>
      </dependency>
    2. Fügen Sie das Plug-in ein, mit dem Sie Clientbibliotheken und das OpenAPI-Dokument openapi.json generieren können:

      <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>endpoints-framework-maven-plugin</artifactId>
        <version>2.0.1</version>
        <configuration>
          <!-- plugin configuration -->
          <hostname>${endpoints.project.id}.appspot.com</hostname>
        </configuration>
      </plugin>

    Gradle

    1. Fügen Sie die Abhängigkeiten der API-Verwaltung hinzu:

      compile 'com.google.endpoints:endpoints-management-control-appengine:1.0.12'
      compile 'com.google.endpoints:endpoints-framework-auth:1.0.12'
    2. Deklarieren Sie die externe Abhängigkeit, damit das Plug-in von Maven Central abgerufen wird:

      classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:2.0.1'
    3. Verwenden Sie das serverseitige Endpoints Frameworks-Plug-in, mit dem das OpenAPI-Dokument generiert wird:

      apply plugin: 'com.google.cloud.tools.endpoints-framework-server'
    4. Konfigurieren Sie den Namen Ihres Endpoints-Diensts:

      endpointsServer {
        // Endpoints Framework Plugin server-side configuration
        hostname = "${projectId}.appspot.com"
      }
  5. Wenn Sie die Abhängigkeiten geändert haben, bereinigen Sie Ihr Projekt und erstellen Sie dann die API:

    Maven

        mvn clean
        mvn package

    Gradle

        gradle clean
        gradle build
  6. Generieren Sie das OpenAPI-Dokument:openapi.json

    Maven

    mvn endpoints-framework:openApiDocs

    Gradle

    gradle endpointsOpenApiDocs
  7. Stellen Sie das OpenAPI-Dokument bereit:

     gcloud endpoints services deploy openapi.json
    

    Bei der ersten Bereitstellung von openapi.json wird ein neuer Endpoints-Dienst mit dem Namen YOUR_PROJECT_ID.appspot.com erstellt. Bei erfolgreichem Abschluss des Vorgangs wird eine Zeile mit der Dienstkonfigurations-ID und dem Dienstnamen angezeigt, die etwa so aussieht:

    Service Configuration 2017-02-13r0 uploaded for service example-project-12345.appspot.com
    

    Im vorherigen Beispiel ist 2017-02-13r0 die Dienstkonfigurations-ID. Die Dienstkonfigurations-ID besteht aus einem Datumsstempel, gefolgt von einer Überarbeitungsnummer. Wenn Sie openapi.json noch einmal bereitstellen, wird die Revisionsnummer in der Dienstkonfigurations-ID erhöht.

    Wenn Sie sich die Dienstkonfigurations-ID noch einmal anzeigen lassen müssen, führen Sie den folgenden Befehl aus, ersetzen dabei jedoch YOUR_PROJECT_ID durch die Projekt-ID Ihres Google Cloud-Projekts:

    gcloud endpoints configs list --service=YOUR_PROJECT_ID.appspot.com
    

    Statt ein generiertes Dokument zu verwenden, können Sie ein eigenes OpenAPI-Dokument erstellen und bereitstellen. Ersetzen Sie openapi.json aus dem obigen Beispiel einfach durch den Pfad zu Ihrem OpenAPI-Dokument. Weitere Informationen zum Erstellen eines OpenAPI-Dokuments finden Sie unter OpenAPI-Übersicht.

  8. Bearbeiten Sie die Datei appengine-web.xml, um den Wert für eine Umgebungsvariable festzulegen:

    <env-variables>
        <env-var name="ENDPOINTS_SERVICE_NAME" value="${endpoints.project.id}.appspot.com" />
    </env-variables>

    Ersetzen Sie ${endpoints.project.id} durch Ihre Google Cloud-Projekt-ID. Beispiel:

    <env-var name="ENDPOINTS_SERVICE_NAME" value="example-project-12345.appspot.com" />
    
  9. Stellen Sie die Anwendung neu bereit.

    Maven

    mvn appengine:deploy

    Gradle

    gradle appengineDeploy

  10. Testen Sie die API mit einigen Anfragen.

  11. Öffnen Sie zum Aufrufen der API-Messwerte in der Cloud Console für Ihr Projekt die Seite Endpoints > Dienste:

    Zur Seite "Endpoints-Dienste"