关于python:通过curl向flask发送json请求

Send JSON-Request to Flask via Curl

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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.
"


app.run()

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

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

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

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


根据get_json文件:

[..] function will return None if the mimetype is not application/json but this can be overridden by the force parameter.

因此,可以指定传入请求的mimetype为application/json

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

或使用force=True强制json解码:

1
data = request.get_json(force=True)

如果在Windows(cmd.exe而不是PowerShell)上运行此命令,则还需要将JSON数据的报价从单引号更改为双引号:

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