【问题标题】:URL for Flask GET vs POSTFlask GET 与 POST 的 URL
【发布时间】:2016-11-29 23:50:09
【问题描述】:

我认为这一定是一个非常简单的问题,或者我可能忽略了一些重要的事情,但我才刚刚开始,有些事情我只是想不通。 我写了一个简单的烧瓶应用程序:

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()   

当我打开以下 URL 时,我会按预期收到 GET 方法消息。

http://localhost:5000/test

但我无法将其切换为 POST 方法。 我需要输入什么 URL 才能看到 POST 方法消息?

【问题讨论】:

    标签: python url flask


    【解决方案1】:

    每当您通过浏览器发出直接 URL 请求时,它都会发出 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
    

    【讨论】:

      【解决方案2】:

      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 呈现它以保持您的代码智能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-08
        • 1970-01-01
        • 2016-07-23
        • 2017-05-22
        • 2019-12-18
        • 2015-06-25
        • 2015-09-13
        相关资源
        最近更新 更多