文檔狀態來定義路由的首選方法是,包括一個尾隨斜線:與尾隨瓶的POST斜線
@app.route('/foo/', methods=['GET'])
def get_foo():
pass
這種方式,客戶端可以GET /foo
或GET /foo/
和接收相同的結果。
但是,POST方法不具有相同的行爲。
from flask import Flask app = Flask(__name__) @app.route('/foo/', methods=['POST']) def post_foo(): return "bar" app.run(port=5000)
在這裏,如果你POST /foo
,它將如果你是不是在調試模式下運行失敗,method not allowed
,或者如果你是在調試模式下,它會用以下通知失敗:
請求被髮送到這個URL(http://localhost:5000/foo),但重定向由路由系統自動發佈到" http://localhost:5000/foo/"。 URL是使用尾部斜線定義的,因此如果沒有訪問它,Flask將自動重定向到帶有斜槓的URL。請務必直接發送您的POST請求到這個網址,因爲我們不能讓瀏覽器或HTTP客戶端表單數據重定向可靠或沒有用戶交互
而且,看來,你甚至不能做到這一點:
@app.route('/foo', methods=['POST'])
@app.route('/foo/', methods=['POST'])
def post_foo():
return "bar"
或者這樣:
@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"
有沒有辦法讓POST
在非尾隨斜線和尾隨斜線上工作?