Zu Cloud Endpoints Frameworks Version 2.0 migrieren

Cloud Endpoints Frameworks hieß früher Endpoints. Damit Sie zwischen den zwei Versionen unterscheiden können, wird auf dieser Seite die neue Version als Endpoints Frameworks Version 2.0 und die ältere als Endpoints Version 1.0 bezeichnet. Auf dieser Seite wird beschrieben, wie Sie eine Cloud Endpoints Version 1.0-Anwendung zu Endpoints Frameworks Version 2.0 migrieren. Bei der Migration werden eine Bibliothek und die Anwendungskonfiguration geändert, ein Umschreiben des Codes ist jedoch nicht erforderlich.

Vorteile

Endpoints Version 2.0 bietet diverse Vorteile:

  • Geringere Anfragelatenz
  • Bessere Integration von App Engine-Funktionen (wie benutzerdefinierte Domains)
  • Neue Funktionen für die API-Verwaltung

Endpoints Frameworks Version 2.0 hat keine Auswirkungen auf die Schnittstellen zu Ihrer API. Bereits bestehende Clients arbeiten nach der Migration ohne clientseitige Änderungen des Codes regulär weiter.

Funktionen

Die folgenden Funktionen sind zu Endpoints Version 1.0 abwärtskompatibel:

  • JSON-REST-Protokoll, das von allen Google Clientbibliotheken verwendet wird
  • Discovery-Dienst
  • Alle bestehenden Authentifizierungsfunktionen (OAuth2/OpenID Connect)
  • Unterstützung der Clientbibliotheken für generierte Clients
  • CORS (für JavaScript-Caller, die nicht die Google JavaScript-Clientbibliothek nutzen)
  • API Explorer

Traffic-Aufteilung ist nicht verfügbar.

Derzeit ausgeschlossene Funktionen

Folgende Funktionen sind nicht verfügbar. Wenn Sie eine dieser Funktionen benötigen, senden Sie eine Funktionsanfrage.

  • JSON-RPC-Protokoll, das für Legacy-iOS-Clients erforderlich ist. Zum Erstellen von iOS-Clients für Ihre Endpoints Frameworks 2.0 API wird empfohlen, die Google API-Clientbibliothek für Objective-C für REST APIs zu verwenden.
  • Automatische ETags
  • Automatische kind-Felder
  • IDE-Einbindung
  • Teilantworten für fields
  • Automatische Erstellung von PATCH-API-Methoden

Von Endpoints 1.0 migrieren

Von Version 1.0 migrieren:

  1. Erstellen Sie im Hauptverzeichnis Ihrer Anwendung einen Unterordner mit dem Namen /lib.

  2. Installieren Sie die Bibliothek aus dem Hauptverzeichnis Ihrer Anwendung:

     pip install -t lib google-endpoints --ignore-installed
    
  3. Entfernen Sie die Einträge - name: endpoints und version 1.0 aus der Datei app.yaml Ihrer Anwendung im Abschnitt libraries. Beispiel:

    libraries:
    - name: endpoints   #Remove
      version: 1.0      #Remove
    
  4. Im Abschnitt libraries in der Datei app.yaml fügen Sie Folgendes hinzu:

    libraries:
    - name: pycrypto
      version: 2.6
    - name: ssl
      version: 2.7.11
    

    Für Endpoints Frameworks sind diese Versionen der Bibliotheken pycrypto und ssl erforderlich.

  5. Ändern Sie im Abschnitt handlers in der app.yaml-Datei die url-Anleitung von - url: /_ah/spi/.* an - url: /_ah/api/.*.

  6. Erstellen/ändern Sie im Stammverzeichnis Ihrer Anwendung die Datei appengine_config.py, die Folgendes enthalten muss:

    from google.appengine.ext import vendor
    
    vendor.add('lib')
    
  7. Prüfen Sie Ihren API-Versionsstring. Der im Decorator @endpoints.api(version='v1', ...) angegebene Versionsstring wird im Pfad Ihrer API angezeigt. Wenn Sie einen mit dem SemVer-Standard kompatiblen Versionsstring angeben, wird beim Bereitstellen der API nur die Hauptversionsnummer im API-Pfad angezeigt. So hat beispielsweise eine API mit dem Namen echo und der Version 2.1.0 einen Pfad wie /echo/v2. Wenn Sie die echo API auf Version 2.2.0 aktualisieren und eine abwärtskompatible Änderung vornehmen, bleibt der Pfad /echo/v2 bestehen. Dadurch können Sie die API-Versionsnummer aktualisieren, wenn Sie eine abwärtskompatible Änderung vornehmen, ohne bestehende Pfade für Ihre Clients zu unterbrechen. Wenn Sie jedoch die echo API auf Version 3.0.0 aktualisieren, weil Sie eine nicht abwärtskompatible Änderung vornehmen, ändert sich der Pfad in /echo/v3.

  8. Stellen Sie Ihre Endpoints Frameworks-Anwendung noch einmal bereit.

Neue Bereitstellung verifizieren

So überprüfen Sie, ob das neue Framework Traffic bereitstellt:

  1. Senden Sie einige Anfragen an die neue Bereitstellung.
  2. Öffnen Sie die Cloud Logging-Seite Ihres Projekts.

    Loganzeige aufrufen

  3. Wenn Anfragen mit Pfaden angezeigt werden, die mit /_ah/api beginnen, stellt Endpoints Frameworks Version 2.0 jetzt Traffic an Ihre API bereit. Die Logs sollten keine Anfragen mit Pfaden enthalten, die mit /_ah/spi beginnen. Diese Anfragen weisen darauf hin, dass der Endpoints Version 1.0-Proxy weiterhin Anfragen bedient.

API-Verwaltung hinzufügen

Endpoints Frameworks Version 2.0 bietet auch Funktionen für die API-Verwaltung:

  • Verwaltung von API-Schlüsseln
  • Teilen von APIs
  • Nutzerauthentifizierung
  • API-Messwerte
  • API-Logs

Gehen Sie zur Seite Erste Schritte mit Endpoints Frameworks für Python, um direkt loszulegen.

Fehlerbehebung

In diesem Abschnitt werden häufige Fehler beschrieben, die bei der Migration zu Endpoints Frameworks Version 2.0 auftreten können, und entsprechende Lösungen vorgeschlagen.

API gibt 404-Fehler zurück, API Explorer listet APIs jedoch weiterhin korrekt auf

Bei der Migration zu Endpoints Frameworks Version 2.0 müssen Sie die alte Konfiguration von Endpoints Version 1.0 entfernen. Wenn die alte Konfiguration noch in der Anwendungskonfiguration vorhanden ist, behandelt der Endpoints-Dienst die Anwendung weiterhin als Anwendung der Version 1.0. Unter Umständen sehen Sie in den App Engine-Logs Anfragen, die an /_ah/spi gesendet werden. Dies hat zur Folge, dass HTTP 404-Fehler an den Client gesendet werden.

  1. Entfernen Sie die folgenden Zeilen aus der Datei app.yaml, falls sie vorhanden sind:

    handlers:
    - url: /_ah/spi/.*
      script: ...
    
  2. Achten Sie darauf, dass der Abschnitt handlers in Ihrer app.yaml-Datei über den korrekten Pfad verfügt:

    handlers:
    # The endpoints handler must be mapped to /_ah/api.
    - url: /_ah/api/.*
      script: ...
    

Fehlermeldung: ImportError: cannot import name locked_file

Diese Fehlermeldung tritt auf, wenn Ihre Abhängigkeiten eine Version der Bibliothek oauth2client enthalten, die mit App Engine nicht kompatibel ist. Siehe Bekannte Probleme.