首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Flask中获取POSTed JSON?

如何在Flask中获取POSTed JSON?
EN

Stack Overflow用户
提问于 2013-11-15 20:35:20
回答 11查看 652.4K关注 0票数 430

我正在尝试使用Flask构建一个简单的应用程序接口,现在我想在其中阅读一些POSTed JSON。我使用Postman Chrome扩展发布,JSON I发布的只是{"text":"lalala"}。我尝试使用以下方法读取JSON:

代码语言:javascript
复制
@app.route('/api/add_message/<uuid>', methods=['GET', 'POST'])
def add_message(uuid):
    content = request.json
    print content
    return uuid

在浏览器上,它正确地返回了我放在GET中的UUID,但在控制台上,它只是打印出None (我希望它打印出{"text":"lalala"}。有人知道如何从Flask方法中获取发布的JSON吗?

EN

回答 11

Stack Overflow用户

发布于 2016-02-25 06:15:58

作为参考,下面是如何从Python客户端发送json的完整代码:

代码语言:javascript
复制
import requests
res = requests.post('http://localhost:5000/api/add_message/1234', json={"mytext":"lalala"})
if res.ok:
    print(res.json())

如下所述,"json=“输入将自动设置内容类型:How to POST JSON data with Python Requests?

上面的客户端将使用以下服务器端代码:

代码语言:javascript
复制
from flask import Flask, request, jsonify
app = Flask(__name__)

@app.route('/api/add_message/<uuid>', methods=['GET', 'POST'])
def add_message(uuid):
    content = request.json
    print(content['mytext'])
    return jsonify({"uuid":uuid})

if __name__ == '__main__':
    app.run(host= '0.0.0.0',debug=True)
票数 161
EN

Stack Overflow用户

发布于 2015-10-28 06:11:47

这就是我要做的,也应该是这样的

代码语言:javascript
复制
@app.route('/api/add_message/<uuid>', methods=['GET', 'POST'])
def add_message(uuid):
    content = request.get_json(silent=True)
    # print(content) # Do your processing
    return uuid

在设置了silent=True的情况下,get_json函数在尝试检索json主体时将静默失败。默认情况下,它设置为False。如果您总是期望json主体(不是可选的),那么将其保留为silent=False

设置force=True将忽略flask为您执行的request.headers.get('Content-Type') == 'application/json'检查。默认情况下,这也设置为False

参见flask documentation

我强烈建议保留force=False,并让客户端发送Content-Type标头以使其更明确。

希望这能有所帮助!

票数 88
EN

Stack Overflow用户

发布于 2017-02-28 23:40:43

假设您已经使用application/json内容类型发布了有效的JSON,request.json将拥有解析后的JSON数据。

代码语言:javascript
复制
from flask import Flask, request, jsonify

app = Flask(__name__)


@app.route('/echo', methods=['POST'])
def hello():
   return jsonify(request.json)
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20001229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档