【发布时间】:2019-10-11 02:02:10
【问题描述】:
我对托管我的烧瓶应用程序的服务器有一个 python 发布请求。它工作正常,我能够获得所需的数据。
但我想使用 POSTMAN 测试 API。我无法做到这一点,因为我在某种程度上不熟悉 POSTMAN。
下面是我的python代码。
import requests
import ast
import json
resp1 = {}
url = 'http://myflaskapiurl:port/route'
files = {'file': open(r'file that should be uploaded to the server', 'rb')}
r = requests.post(url, files=files, data={"flag":2})
headers = {
'content-type': "multipart/form-data",
'Content-Type': "application/x-www-form-urlencoded",
'cache-control': "no-cache",
}
resp1 = ast.literal_eval(r.text)
print(resp1)
我正在努力解决我尝试发布到服务器的数据和文件是否应该在原始 json 或 form-data 或 x-www-form-urlencoded 正文部分的问题。还有实际的结构应该是什么。
因为每次我使用 body 的 form-data 或 x-www-form-urlencoded 部分发布此数据时,我都会收到错误提示
werkzeug.exceptions.BadRequestKeyError
werkzeug.exceptions.HTTPException.wrap..newcls: 400 Bad Request: KeyError: 'file'
【问题讨论】:
-
headers变量的用途是什么?requests在您提交文件时自动设置multipart/form-data。 (否则无法传输文件名。)另外,为什么它包含两次content-type? -
问题不在于代码,正如我所说的,它运行良好。我得到了想要的输出。至于双重内容类型,我把它放在那里是为了表明我已经尝试过它们。我已经尝试过 form-data 和 x-www-form-urlencoded。两种方式我都能够将发布请求发送到服务器并接收正确的响应。