PUT 请求到 REST API 使用 Python
PUT Request to REST API using Python
出于某种原因,我的放置请求无法正常工作,而且出现语法错误。我是 Python 的新手,但我的 GET 和 POST 请求正在运行。有没有人认为此请求和任何建议有任何问题?我正在尝试将描述更改为 "Changed Description"
PUT
#import requests library for making REST calls
import requests
import json
#specify url
url = 'my URL'
token = "my token"
data = {
"agentName": "myAgentName",
"agentId": "20",
"description": "Changed Description",
"platform": "Windows"
}
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json", data:data}
#Call REST API
response = requests.put(url, data=data, headers=headers)
#Print Response
print(response.text)
这是我遇到的错误。
Traceback (most recent call last):
line 17, in <module>
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json", data:data}
TypeError: unhashable type: 'dict'
由于 =
在您的 headers
词典中登录,语法错误:
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json", data=data}
应该是:
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json", 'data':data}
请参阅 data=data
已更改为 'data':data
。冒号和单引号。
您确定要在 header 中发送数据吗?或者您应该在 put
请求中将 payload
替换为 data
?
编辑:
由于您已经编辑了问题,现在您正在将数据作为 PUT 请求的 body requests.put(data=data)
发送,因此在 header 中不需要它。只需将您的 header 更改为:
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json"}
但是由于您已将 Content-Type
header 设置为 application/json
所以我认为在您的 PUT 请求中您应该这样做
response = requests.put(url, data=json.dumps(data), headers=headers)
即以 json.
形式发送您的数据
问题是您尝试将 data
分配给字典中的 data
元素:
headers = { ..., data:data }
这行不通,因为您不能将字典用作字典中的键(从技术上讲,因为它不可哈希)。
你可能想做
headers = { ..., "data":data }
出于某种原因,我的放置请求无法正常工作,而且出现语法错误。我是 Python 的新手,但我的 GET 和 POST 请求正在运行。有没有人认为此请求和任何建议有任何问题?我正在尝试将描述更改为 "Changed Description"
PUT
#import requests library for making REST calls
import requests
import json
#specify url
url = 'my URL'
token = "my token"
data = {
"agentName": "myAgentName",
"agentId": "20",
"description": "Changed Description",
"platform": "Windows"
}
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json", data:data}
#Call REST API
response = requests.put(url, data=data, headers=headers)
#Print Response
print(response.text)
这是我遇到的错误。
Traceback (most recent call last):
line 17, in <module>
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json", data:data}
TypeError: unhashable type: 'dict'
由于 =
在您的 headers
词典中登录,语法错误:
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json", data=data}
应该是:
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json", 'data':data}
请参阅 data=data
已更改为 'data':data
。冒号和单引号。
您确定要在 header 中发送数据吗?或者您应该在 put
请求中将 payload
替换为 data
?
编辑:
由于您已经编辑了问题,现在您正在将数据作为 PUT 请求的 body requests.put(data=data)
发送,因此在 header 中不需要它。只需将您的 header 更改为:
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json"}
但是由于您已将 Content-Type
header 设置为 application/json
所以我认为在您的 PUT 请求中您应该这样做
response = requests.put(url, data=json.dumps(data), headers=headers)
即以 json.
形式发送您的数据问题是您尝试将 data
分配给字典中的 data
元素:
headers = { ..., data:data }
这行不通,因为您不能将字典用作字典中的键(从技术上讲,因为它不可哈希)。
你可能想做
headers = { ..., "data":data }