通过Curl将JSON-Request发送到Flask

时间:2017-10-31 10:54:20

标签: python json windows curl flask

我在烧瓶中设置了一个非常简单的邮政路线:

from flask import Flask, request

app = Flask(__name__)

@app.route('/post', methods=['POST'])
def post_route():
    if request.method == 'POST':

        data = request.get_json()

        print('Data Received: "{data}"'.format(data=data))
        return "Request Processed.\n"

app.run()

这是我尝试从命令行发送的curl请求:

curl localhost:5000/post -d '{"foo": "bar"}'

但是,它仍打印出'收到的数据:'无“'。所以,它无法识别我传递的JSON。

在这种情况下是否需要指定json格式?

1 个答案:

答案 0 :(得分:12)

根据get_json文档:

  如果mimetype不是None

[..]函数将返回application/json,但这可以被force参数覆盖。

因此,要么将传入请求的mimetype指定为application/json

curl localhost:5000/post -d '{"foo": "bar"}' -H 'Content-Type: application/json'

或使用force=True强制进行JSON解码:

data = request.get_json(force=True)

如果在Windows上运行cmd.exe,而不是PowerShell),您还需要更改JSON数据的引用,从单引号到双引号:

curl localhost:5000/post -d "{\"foo\": \"bar\"}" -H 'Content-Type: application/json'