我不知道这是否是一个愚蠢的问题,但我已经编写了一个脚本,使用python中的请求进行api put调用。试图发送的数据im包含一个布尔值。所以我的剧本是这样的
import requests
data = {
'name': 'John',
'lastname': "Doe",
'email': "jd@gmail.com",
'is_staff' : True
}
url = 'http://api.url/user/'
response = requests.put(
url, data=data, verify=True, allow_redirects=False)
print(response)但这给了我400个请求错误。然后,我认为问题在于api调用,但当我删除is_staff数据时。
data = {
'name': 'John',
'lastname': "Doe",
'email': "jd@gmail.com",
}我有200个身份代码。我的入门告诉我,api不知道python的布尔值是什么。但我可能错了。有什么想法吗?
发布于 2020-11-15 16:20:36
请求库接受数据dict并将其转换为请求体,请求体不是dict,而是包含键和值的字符串。在本例中,它将其转换为key1=value1&key2=value2表单。
您可以通过以下方式查看请求库发送的请求正文:
response.request.body它回来了
'name=John&lastname=Doe&email=jd%40gmail.com&is_staff=True'在这种情况下,您要发送的布尔值被转换为"True“或"False”。问题可能是but服务器期望的是"true“或"false”,但这取决于服务器。尝试:
data = {
'name': 'John',
'lastname': "Doe",
'email': "jd@gmail.com",
'is_staff' : "true"
}或者说是动态:
is_staff = True
data = {
'name': "John",
'lastname': "Doe",
'email': "jd@gmail.com",
'is_staff' : str(is_staff).lower()
}https://stackoverflow.com/questions/64846514
复制相似问题