我在烧瓶中设置了一个非常简单的邮政路线:
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格式?
答案 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'