2016-06-02 7 views
0

Ich habe eine Python Flask-Anwendung, die auf Bluemix bereitgestellt wird. Wenn ich es lokal ausführe, funktioniert alles wie erwartet. Wenn ich jedoch in Bluemix eine Anfrage an die App mache, verliert der Pfad meiner Anfrage das erste Segment, was zu einem 404 führt.Python Flask request.path verliert sein erstes Pfadsegment bei der Bereitstellung auf Bluemix

Zum Beispiel, wenn ich eine Anfrage an /api/v1/items machen und wir führen ein print request.path in meiner app.before_request() Funktion, druckt er /v1/items an die Konsole.

App und Umgebung Details:

  • Laufzeit: Python v2.7.10
  • Flask Version: v0.10.1
  • Plattform: Bluemix Cloud Foundry

Natürlich könnte ich einfach Geben Sie jede API-Anfrage mit einem /blah vor dem Pfad, aber das wäre ziemlich unelegant.

Wie ist es, dass Flask das erste Segment des Pfads meiner Anfragen streift? Hat jemand irgendwelche Hinweise, warum dies passiert und/oder mögliche Lösungen?

+0

Bitte [bearbeiten], um ein [mcve] einzuschließen. Wie hast du deinen Server konfiguriert? Mögliches Duplikat von [Fügen Sie allen Flask-Routen ein Präfix hinzu] (http://stackoverflow.com/questions/18967441/add-a-prefix-to-all-flask-routes). – davidism

+0

Nicht ein Duplikat dieses Problems (ich benutze Blueprints), aber hier ist ein [GitHub Repo mit einem McV-Beispiel] (https://github.com/JakePeyser/flask-path-mcv) –

+0

Entschlossen mein Problem, damit ich weiß Es war kein Duplikat. Dummheit auf meiner Seite. –

Antwort

0

Das Problem endete damit, dass ich die API von einem REST-Client() anrief und eine Umgebungsvariable für meinen Hostnamen verwendete. Ich hatte einen Schrägstrich sowohl in der env var als auch in der Anforderungs-URL, was dazu führte, dass die endgültige gesendete Anforderungs-URL nach der Domain einen doppelten Schrägstrich hatte.

Wenn Sie also eine API-Anfrage an eine flask-App mit zwei Schrägstrichen nach dem Domänennamen machen (d. H. myapi.com//api/v1/path), entfernt der Python-Webserver das erste Pfadsegment (api/ in diesem Fall).