Flask JSON 发布请求不起作用

Posted

技术标签:

【中文标题】Flask JSON 发布请求不起作用【英文标题】:Flask JSON post request not working 【发布时间】:2017-01-28 00:00:52 【问题描述】:

我正在使用 react 向烧瓶后端提交表单。数据以json形式提交,这是一个例子。

add_new_user(e)
  e.preventDefault()
  var user_details = 
  user_details['fname'] = this.state.first_name
  user_details['last_name'] = this.state.last_name

var post_request = new Request('http://127.0.0.1:5000/add_new_user', 
    method: 'post',
    body: JSON.stringify(user_details)
)

fetch(post_request).then(function(response)
    console.log(response)
)

在我的后端,代码如下所示,

@app.route('/add_new_user', methods=['POST'])
def add_user():
    content = request.json()
    print content
    return 'user added'

但是内容变量为空,因此屏幕上的打印数据为无。我怎样才能解决这个问题?我究竟做错了什么。谢谢

【问题讨论】:

【参考方案1】:

试试request.get_json(force=True)。建议使用get_json() 而不是json() 方法。 force=True 允许忽略内容类型要求。

【讨论】:

谢谢,force=True 似乎可以工作,但是当我在没有 force=True 的情况下添加content-type: application/json 时,它仍然无法工作。这是为什么呢? @rksh 确保您在 React 客户端中正确设置了内容需求类型。可能是一些缓存问题。也尝试使用例如发出请求卷曲并查看结果。 curl -H "Content-Type: application/json" -X POST -d '"fname":"some first name","last_name":"some last name"' http://127.0.0.1:5000/add_new_user 嗨,抱歉,我正确设置了内容类型,但是我必须安装 flask-cors 扩展以启用 cors 才能正常工作。谢谢 @rksh 不客气。希望答案是有帮助的)。【参考方案2】:

您可能需要将请求的请求内容类型设置为application/json。否则,它将是None

【讨论】:

添加了content-type: application/json,但它似乎不起作用,这是为什么呢?

以上是关于Flask JSON 发布请求不起作用的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking JSON 请求不起作用

向 FCM 服务器发送 JSON 请求不起作用

烧瓶上的 HTTP 摘要身份验证对我不起作用

JSON HTTP请求在Mac OSX上不起作用[重复]

JSON HTTP请求在Mac OSX上不起作用[重复]

JSON stringify 中的变量在 Rest 请求中不起作用