何らかの理由でputリクエストが機能せず、構文エラーが発生します。 Pythonは初めてですが、GETおよびPOSTリクエストが機能しています。このリクエストと推奨事項に何か問題がありますか?変更しようとしています説明を「変更された説明」に
[〜#〜]プット[〜#〜]
#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
_で変更されたのを参照してください。コロンと単一引用符。
そして、あなたはあなたのヘッダーでデータを送信しますか?または、payload
リクエストでdata
をput
に置き換えますか?
編集:
質問を編集し、データをPUTリクエストの本文requests.put(data=data)
として送信しているので、ヘッダーでは必要ありません。ヘッダーを次のように変更してください:
_headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json"}
_
しかし、あなたの_Content-Type
_ヘッダーを_application/json
_に設定したので、私はあなたのPUTリクエストであなたがすべきだと思います
_response = requests.put(url, data=json.dumps(data), headers=headers)
_
つまり、データをjsonとして送信します。
問題は、辞書のdata
要素にdata
を割り当てようとすることです。
headers = { ..., data:data }
ディクショナリのキーとしてディクショナリを使用できないため、これは機能しません(技術的には、ハッシュ化できないためです)。
あなたはおそらくやりたかった
headers = { ..., "data":data }