Die Dokumentation besagt, dass der bevorzugte Weg, um eine Route zu definieren, ist ein Schrägstrich enthalten:Flask POSTs mit nachgestellten Schrägstrich
@app.route('/foo/', methods=['GET'])
def get_foo():
pass
Auf diese Weise kann ein Client GET /foo
oder GET /foo/
und das gleiche Ergebnis erhalten.
POSTed-Methoden haben jedoch nicht das gleiche Verhalten.
from flask import Flask app = Flask(__name__) @app.route('/foo/', methods=['POST']) def post_foo(): return "bar" app.run(port=5000)
hier, wenn Sie POST /foo
, wird es mit method not allowed
fehlschlagen, wenn Sie nicht im Debug-Modus ausgeführt werden, oder es wird mit dem folgenden Hinweis fehlschlagen, wenn Sie im Debug-Modus sind:
Eine Anfrage wurde an diese URL gesendet (http://localhost:5000/foo), aber eine Weiterleitung wurde automatisch vom Routing-System an " http://localhost:5000/foo/". Die URL wurde mit einem nachgestellten Schrägstrich definiert, sodass Flask automatisch auf die URL mit dem nachfolgenden Schrägstrich umleitet, wenn auf sie zugegriffen wurde. Achten Sie darauf, direkt Ihre POST-Anfrage an diese URL zu senden, da wir nicht Browser machen kann oder HTTP-Clients umleiten mit Formulardaten zuverlässig oder ohne Zutun des Benutzers
Darüber hinaus scheint es, dass Sie nicht einmal das tun kann :
@app.route('/foo', methods=['POST'])
@app.route('/foo/', methods=['POST'])
def post_foo():
return "bar"
Oder diese:
@app.route('/foo', methods=['POST']) def post_foo_no_slash(): return redirect(url_for('post_foo'), code=302) @app.route('/foo/', methods=['POST']) def post_foo(): return "bar"
Gibt es eine Möglichkeit, POST
mit nicht-nachlaufenden und nachfolgenden Schrägstrichen arbeiten zu lassen?