Pour une raison quelconque, ma demande de vente ne fonctionne pas et je reçois des erreurs de syntaxe. Je ne connais pas encore Python, mais mes requêtes GET et POST fonctionnent. Quelqu'un voit-il quelque chose qui ne va pas avec cette demande et ses recommandations? J'essaie de changer la description en "Description modifiée"
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)
Voici l'erreur que je reçois.
Traceback (most recent call last):
line 17, in <module>
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json", data:data}
TypeError: unhashable type: 'dict'
Erreur de syntaxe en raison de la connexion =
dans votre dictionnaire headers
:
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json", data=data}
CA devrait etre:
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json", 'data':data}
Voir data=data
est modifié avec 'data':data
. Citations du côlon et simples.
Et êtes-vous sûr de vouloir envoyer des données dans vos en-têtes? Ou vous devriez remplacer votre payload
par data
dans votre demande put
?
Modifier:
Comme vous avez modifié la question et que vous envoyez maintenant des données en tant que corps requests.put(data=data)
de la requête PUT, il n’est pas nécessaire de les utiliser dans les en-têtes. Il suffit de changer vos en-têtes pour:
headers = {'Authorization': 'Bearer ' + token, "Content-Type": "application/json"}
Mais comme vous avez défini votre en-tête Content-Type
sur application/json
, vous devriez le faire dans votre requête PUT.
response = requests.put(url, data=json.dumps(data), headers=headers)
c'est envoyer vos données en json.
Le problème est que vous essayez d'affecter data
à l'élément data
de votre dictionnaire:
headers = { ..., data:data }
Cela ne peut pas fonctionner parce que vous ne pouvez pas utiliser un dictionnaire comme clé dans un dictionnaire (techniquement, parce que ce n'est pas obligatoire).
Tu voulais probablement faire
headers = { ..., "data":data }