Das Problem
Beim Hochladen einer Datei mithilfe der Go Blobstore-API wird die Erfolgspfad leitet auf das falsche appengine Modul . Hier ist eine visuelle Beschreibung des Problems:
http://A.my-appengine-app.com/upload
http://A.my-appengine-app.com/upload/session
/upload/session
, der den folgenden Go-Code ausführt: url, err := blobstore.UploadURL(c, "/upload/success")
http://A.my-appengine-app.com/_ah/upload/[some long hash]/
action
eines <form>
. POST
-Anforderung an die URL /upload/success
umzuleiten.
Hier werden die Dinge merkwürdig. In der Entwicklung wird der Server im Modul A nach "/ upload / success" umgeleitet. In der Produktion leitet der Server zum Hauptmodul um, das wir vorläufig B nennen können. Ich kann sagen, dass dies passiert, weil ich ein 404
in meiner Webkonsole erhalte und die Protokolle anzeigen, dass die Anfrage an das Modul B gestellt wurde. Ich bin sogar so weit gegangen, den Hostnamen explizit als Teil des Erfolgspfads (Schritt # 3), aber ohne Wirkung.
Aktuelle Lösung (nicht ideal)
Es scheint mir, dass ich nur einen Handler im Modul B definieren muss, um die Anfrage als Modul A zu bearbeiten. Da die Goapp-Architektur alle Module zusammenfasst, ist dies nicht der schlechteste Kompromiss in der Welt, aber es ist semantisch falsch, da Module vertikal unabhängig sein sollen. Wenn jemand eine Idee hat, wie man das umgeht, wäre ich verpflichtet. Fürs Erste nehme ich den oben genannten Ansatz.
Tags und Links go google-app-engine blobstore gae-module app-engine-modules