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 hinzufügen, verarbeitet Ihre API zwar weiterhin Anfragen, allerdings ohne auf der Seite Endpoints > Dienste in der Google Cloud Console angezeigt zu werden. Die von Endpoints bereitgestellten Funktionen wie Logging, Monitoring und das Festlegen von Kontingenten stehen dann nicht zur Verfügung.

Erforderliche Software installieren und konfigurieren

Falls Sie es nicht bereits getan haben, installieren und konfigurieren Sie die Google Cloud CLI für Python. Fügen Sie anschließend Ihrem API-Projektverzeichnis die Python-Bibliothek für Endpoints Frameworks hinzu, damit beides bei der Bereitstellung mit dem API-Code hochgeladen wird.

gcloud CLI für Python installieren und konfigurieren

  1. So installieren und initialisieren Sie die gcloud CLI:

    gcloud CLI herunterladen und installieren

  2. Installieren Sie die Komponente gcloud, die die App Engine-Erweiterung für Python enthält:

    gcloud components install app-engine-python
    
  3. gcloud CLI aktualisieren

    gcloud components update
    
  4. Achten Sie darauf, dass die gcloud CLI zum Zugriff auf Ihre Daten und Dienste in Google Cloud berechtigt ist:

    gcloud auth login
    

    Ein neuer Browsertab wird geöffnet und Sie werden aufgefordert, ein Konto auszuwählen.

  5. Legen Sie für das Standardprojekt Ihre Projekt-ID fest: Ersetzen Sie YOUR_PROJECT_ID durch die ID Ihres Google Cloud-Projekts.

    gcloud config set project YOUR_PROJECT_ID
    
  6. Legen Sie unter Linux für die Umgebungsvariable ENDPOINTS_GAE_SDK den Pfad Ihres App Engine SDK-Ordners fest:

    PATH_TO_CLOUD_SDK/platform/google_appengine
    

    Ersetzen Sie PATH_TO_CLOUD_SDK durch die Ausgabe des folgenden Befehls:

    gcloud info --format="value(installation.sdk_root)"
    

Python-Bibliothek von Endpoints Frameworks einbinden

  1. Vergewissern Sie sich, dass Sie C-Erweiterungen für Python kompilieren können.

    • Windows: Microsoft Visual C++ 9.0 oder höher ist erforderlich. Sie können den Microsoft Visual C++ Compiler für Python 2.7 im Microsoft Download Center herunterladen.

    • Andere Betriebssysteme: Abhängig von Ihrem Betriebssystem müssen Sie möglicherweise Compilertools (manchmal in einem Paket namens build-essential) und/oder die Python-Entwicklungsheader (manchmal in einem Paket namens python-dev) installieren.

  2. Wählen Sie das Hauptverzeichnis Ihrer API als Verzeichnis aus.

  3. Erstellen Sie im Hauptverzeichnis der API das Unterverzeichnis /lib:

    mkdir lib
    
  4. Installieren Sie die Bibliothek:

    pip install -t lib google-endpoints --ignore-installed
    

OpenAPI-Dokument generieren

Generieren Sie im Hauptverzeichnis der API mit den Framework-Tools ein OpenAPI-Dokument. Beispiel:

Einzelne Klasse

Ersetzen Sie im folgenden Befehl YOUR_PROJECT_ID durch die ID Ihres Google Cloud-Projekts.

python lib/endpoints/endpointscfg.py get_openapi_spec main.EchoApi \
    --hostname YOUR_PROJECT_ID.appspot.com

Ignorieren Sie die angezeigten Warnungen.

Mehrere Klassen

Sie können mehrere Klassen in der Befehlszeile auflisten. Endpoints generiert für jede Kombination aus API-Name und API-Version ein OpenAPI-Dokument.

Wenn Sie mehrere API-Klassen mit unterschiedlichen API-Namen als Teile eines einzelnen Dienstes bereitstellen möchten, müssen Sie auch das Flag --x-google-api-name angeben. Damit werden zusätzliche Einschränkungen für die API-Namen festgelegt. Insbesondere müssen die Namen mit dem regulären Ausdruck [a-z][a-z0-9]{0,39} übereinstimmen. Das heißt, der Name muss aus 1 bis 40 Zeichen bestehen. Dabei kann es sich entweder um Kleinbuchstaben oder um Zahlen handeln, mit der Ausnahme, dass das erste Zeichen keine Zahl sein darf. Beispiel:

Ersetzen Sie im folgenden Befehl YOUR_PROJECT_ID durch die ID Ihres Google Cloud-Projekts.

python lib/endpoints/endpointscfg.py get_openapi_spec main.FooApi main.BarApi \
   --hostname YOUR_PROJECT_ID.appspot.com \
   --x-google-api-name

Ignorieren Sie die angezeigten Warnungen.

Endpoints verwendet den im Argument hostname angegebenen Text als Dienstnamen. Wenn Sie die API in App Engine bereitstellen, wird automatisch ein DNS-Eintrag mit einem Namen im Format YOUR_PROJECT_ID.appspot.com erstellt.

OpenAPI-Dokument bereitstellen

Einzelne Klasse

gcloud endpoints services deploy echov1openapi.json

Mehrere Klassen

Wenn Sie mehrere OpenAPI-Dokumente haben, listen Sie alle in der Befehlszeile auf. Beispiel:

 gcloud endpoints services deploy foov1openapi.json barv1openapi.json

Bei der ersten Bereitstellung eines oder mehrerer OpenAPI-Dokumente wird ein neuer Endpoints-Dienst namens YOUR_PROJECT_ID.appspot.com erstellt.

Bei erfolgreichem Abschluss des Vorgangs wird eine Zeile wie die folgende mit der Dienstkonfigurations-ID und dem Dienstnamen angezeigt:

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

Im obigen Beispiel ist 2017-02-13r0 die Dienstkonfigurations-ID. Die Dienstkonfigurations-ID besteht aus einem Datumsstempel, gefolgt von einer Überarbeitungsnummer. Wenn Sie Ihr OpenAPI-Dokument neu bereitstellen, erhöht sich die Überarbeitungsnummer in der Dienstkonfigurations-ID.

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 echov1openapi.json aus dem obigen Beispiel einfach durch den Pfad zu Ihrem OpenAPI-Dokument. Weitere Informationen zum Erstellen eines OpenAPI-Dokuments finden Sie in der OpenAPI-Übersicht.

API neu bereitstellen und testen

  1. Bearbeiten Sie die Datei app.yaml Ihres Projekts und fügen Sie einen Abschnitt env_variables hinzu:

    env_variables:
      ENDPOINTS_SERVICE_NAME: YOUR_PROJECT_ID.appspot.com
      ENDPOINTS_SERVICE_VERSION: YOUR_SERVICE_VERSION
    

    Ersetzen Sie YOUR_PROJECT_ID durch die ID Ihres Google Cloud-Projekts und YOUR_SERVICE_VERSION durch Ihre Dienstkonfigurations-ID aus dem vorherigen Abschnitt. Durch diese Ergänzung der Datei app.yaml verwaltet Endpoints Ihre API, nachdem Sie die Anwendung wieder bereitstellen.

  2. Stellen Sie die Anwendung wieder bereit:

    gcloud app deploy
    
  3. Warten Sie kurz, bis die Bereitstellung abgeschlossen ist. Ignorieren Sie die Warnmeldungen. Nach Abschluss der Bereitstellung erhalten Sie in etwa folgende Meldung:

    File upload done.
    Updating service [default]...done.
    
  4. Testen Sie beispielsweise mithilfe von curl, ob die neue Bereitstellung erfolgreich war:

    curl --request POST \
        --header "Content-Type: application/json" \
        --data '{"content":"echo"}' \
        https://YOUR_PROJECT_ID.appspot.com/_ah/api/echo/v1/echo?n=2
    

    Ersetzen Sie echo durch den Namen der API.

    Die Ergebnisse sollten so aussehen:

    {
     "content": "echo echo"
    }
    
  5. Senden Sie weitere Anfragen an Ihre API.

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

    Endpoints-Dienste aufrufen