烧瓶上的POST请求失败[重复]

Posted

技术标签:

【中文标题】烧瓶上的POST请求失败[重复]【英文标题】:POST request fails on flask [duplicate] 【发布时间】:2019-10-25 08:17:50 【问题描述】:

我正在尝试从这个page复制代码,完整的github代码是here:

该应用程序在浏览器上运行良好,但我无法重现来自 python 的 POST 请求。

我尝试过使用浏览器时显示在有效负载上的相同数据

PEOPLE =  "fname": "DDoug",
        "lname": "FarDrell"

url = "http://localhost:5000/api/people"
data = requests.post(url,data=json.dumps(PEOPLE) )

但我得到以下错误:

data.text

'\n  "detail": "Invalid Content-type (), expected JSON data",\n  "status": 415,\n  "title": "Unsupported Media Type",\n  "type": "about:blank"\n\n'

我也试过这样:

url = "http://localhost:5000/api/people"
data = requests.post(url,data=json.dumps(PEOPLE) )

但出现此错误:

'\n  "detail": "Invalid Content-type (application/x-www-form-urlencoded), expected JSON data",\n  "status": 415,\n  "title": "Unsupported Media Type",\n  "type": "about:blank"\n\n'

【问题讨论】:

【参考方案1】:

Content-Type 添加到您的帖子标题中以指定您要发送 JSON 数据:

requests.post(url,data=json.dumps(PEOPLE), headers='Content-Type': 'application/json')

你也可以使用json参数来达到同样的效果:

requests.post(url, json=json.dumps(PEOPLE))

【讨论】:

有些例子没有,你怎么知道有必要? 默认请求头是None,所以不会被读取为JSON。您还可以(作为速记)使用json= 参数来避免headers=...。我将更新我的答案以包含此内容。

以上是关于烧瓶上的POST请求失败[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Minikube上的入口控制器未正确路由烧瓶POST请求

Ajax Post请求失败[重复]

使用烧瓶返回布尔作为POST响应[重复]

iOS javascript POST请求奇怪的行为

从VBA到烧瓶的HTTP请求编码问题

怎么用PHP发送POST请求