2016-11-29 75 views
-1

我想,這一定是一個非常簡單的問題,或許我俯瞰什麼專業,但我只是入門和有件事我只是想不通。 我寫了一個簡單的燒瓶應用:網址爲瓶GET VS POST

from flask import Flask, request, jsonify 
app = Flask(__name__) 

@app.route("/") 
def index(): 
    return "Index!" 

@app.route('/test', methods=['GET', 'POST']) 
def test(): 
    if request.method=='GET': 
     return "OK this is a get method" 

    elif request.method=='POST': 
     return "OK this is a post method" 
    else: 
     return("ok") 


if __name__ == "__main__": 
    app.run() 

當我打開下面的網址,我得到GET方法的消息符合市場預期。

http://localhost:5000/test 

但我不能將它切換到POST方法。 我需要輸入什麼URL來查看POST方法消息?

回答

2

無論什麼時候通過瀏覽器直接URL請求,它使一個GET電話。它與URL無關,而是與請求一起發送到服務器的請求類型值。

爲了使POST請求(或任何其他類型的請求),你可以使用任何REST客戶端工具,請參閱:How do I manually fire HTTP POST requests with Firefox or Chrome?

我個人使用,Postman這是作爲插件的Chrome。 Advance Rest Client也是實現這一目標的一個非常好的選擇。

如果您需要一個令人討厭的工具(有些人認爲命令行是令人討厭的)),您可以使用curl來傳輸帶有URL的數據。爲了使POST要求,你必須稱呼其爲:

curl -i -X POST -H 'Content-Type: application/json' -d '{"param1": "value1", "param2": "value2"}' http://localhost:5000/test 
0

HTML表單是你發送POST請求的主要方式。而不是你的return "Index"可以轉而做:

return ''' 
    <form method="post" action="/test"> 
     <input type="text" name="your field"/> 
     <button type="submit">Post to your /test!</button> 
    </form> 
''' 

在現實中你有你的模板文件夾內的whatever.html文件形式的代碼,並與render_template使其保持代碼的智能。