通过Curl将JSON-Request发送到Flask

OhM*_*Mad 16 python windows json 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()
Run Code Online (Sandbox Code Playgroud)

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

curl localhost:5000/post -d '{"foo": "bar"}'
Run Code Online (Sandbox Code Playgroud)

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

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

ran*_*mir 15

根据get_json文件:

None如果mimetype不是,[..]函数将返回,application/jsonforce参数可以覆盖它.

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

curl localhost:5000/post -d '{"foo": "bar"}' -H 'Content-Type: application/json'
Run Code Online (Sandbox Code Playgroud)

或强制JSON解码force=True:

data = request.get_json(force=True)
Run Code Online (Sandbox Code Playgroud)

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

curl localhost:5000/post -d "{\"foo\": \"bar\"}" -H 'Content-Type: application/json'
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,仍然无法正常工作。 (3认同)