0

Ich arbeite an einer App Engine-App, die sowohl über ein Frontend (Dart/Polymer) als auch über ein Backend (Endpunkte für Python) verfügt. Nachdem ich mich lokal entwickelt habe, erwarte ich etwas in den folgenden Zeilen:Installation der neuen API-Clientbibliothek in der App Engine-App

Laden Sie die App in App Engine hoch.

Erzeugen Sie eine neue Entdeckung Dokument für die API von

$> wget -O discovery.json <project>.appspot.com/_ah/api/discovery/apis/... 

die neue API-Client-Bibliothek generieren laufen durch

$> generate.dart files -i . -o . 

Installieren Sie die neue Client-Bibliothek im Frontend lib/ oder Dingsbums läuft.

Laden Sie die App hoch. Ändern Sie Integrationstests so, dass sie auf die bereitgestellte App verweisen. Überprüfe, ob Tests bestanden wurden

Änderungen an Integrationstests rückgängig machen. Installieren Sie erneut die Version local der API-Clientbibliothek. Weiterentwicklung fortsetzen.

Wie Sie sehen können, wird dies langweilig werden. Hat jemand Tipps, um diesen Prozess zu optimieren? Gehe ich falsch herum? Vielleicht sollte ich mehr auf dem bereitgestellten Server tun?

Antwort

0

ich daran gearbeitet etwas mehr und kam mit der folgenden allgemeinen Abfolge von Aktionen auf, die wenige Schritte erfordern (nur einmal herunterladen Entdeckung doc und implementieren nur einmal):

  • ändern Sie die API (Arbeits auf localhost)
  • verwenden endpointscfg.py mit dem --hostname Parameter ein Entdeckungsdokument für dev_appserver ('localhost: 8080') zu erzeugen
  • generieren, um die Client-Bibliothek unter Verwendung von discoveryapis_generator
  • Umbenennen die cli ent-Bibliothek (myapi_remote.dart)
  • Verwenden endpointscfg.py mit dem --hostname Parameter eine Entdeckung Dokument für die App Engine-Laufzeit (yourproject.appspot.com ')
  • Generieren Sie die Client-Bibliothek mit discoveryapis_generator
  • Benennen Sie die Client-Bibliothek (myapi_remote.dart erzeugen)
  • Installieren Sie die beiden Client-Bibliotheken in der lib/ Verzeichnis
  • Symlink myapi.dart zu myapi_remote.dart
  • des Dart-Projekt Erstellen und Bereitstellen von
  • Symlink myapi.dart zu myapi_local.dart
  • Weiter Entwicklung

Jetzt haben Sie sowohl lokale als auch Remote-Client-Bibliotheken zur Hand und kann nur den Symlink ändern, wie gewünscht Ihre lokalen oder entfalteten Daten zuzugreifen. Beachten Sie, dass das Entdeckungsdokument, das von endpointscfg.py für dev_appserver erzeugt wird, "HTTPS" statt der richtigen "http" angibt. Dies kann in der von discoveryapis_generator generierten Dart-Datei behoben werden.

Tatsächlich kann dieser gesamte Workflow beträchtlich verkürzt werden, indem einfach der rootUrl Parameter geändert wird, der im MyApi Konstruktor der Clientbibliothek angegeben ist.

Natürlich ist dies alles in einem Python-Skript automatisiert. Ich habe keinen auf Github usw. gesucht, aber es ist ziemlich einfach. Ich werde es hier posten, wenn jemand fragt.

Verwandte Themen