Flask GET与POST的URL

时间:2016-11-29 23:50:10

标签: python url flask

我认为这一定是一个非常简单的问题,或者我可能忽略了一些重要的问题,但我只是开始了,而且有些东西我无法理解。 我写了一个简单的烧瓶应用程序:

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 个答案:

答案 0 :(得分:2)

每当您通过浏览器发出直接网址请求时,都会进行GET来电。它与URL无关,但与请求服务器的请求类型值无关。

要发出POST请求(或任何其他类型的请求),您可以使用任何Rest Client Tool,请参阅: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

答案 1 :(得分:0)

HTML表单是您发送帖子请求的主要方式。而不是你的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进行呈现,以保持代码的智能化。