J'ai une application Rails 4 qui utilise l'authentification basée sur des jetons pour les API et doit pouvoir mettre à jour les enregistrements via le script Python 3).
Mon script actuel ressemble à ceci
import requests
import json
url = 'http://0.0.0.0:3000/api/v1/update_experiment.json'
payload = {'expt_name' : 'A60E001', 'status' : 'done' }
r = requests.patch(url, payload)
qui fonctionne bien si je désactive l'authentification API.
Je ne sais pas comment y ajouter des en-têtes, requests.patch
ne prend que deux paramètres selon les documents.
Je devrais arriver au point où les informations d'en-tête suivantes seraient ajoutées
'Authorization:Token token="xxxxxxxxxxxxxxxxxxxxxx"'
Ce type d'en-tête fonctionne correctement en boucle. Comment puis-je le faire dans Python 3 et requêtes?
patch prend kwargs, passez juste les en-têtes = {your_header}:
def patch(url, data=None, **kwargs):
"""Sends a PATCH request.
:param url: URL for the new :class:`Request` object.
:param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`.
:param \*\*kwargs: Optional arguments that ``request`` takes.
:return: :class:`Response <Response>` object
:rtype: requests.Response
"""
return request('patch', url, data=data, **kwargs)
Quelque chose comme:
head = {"Authorization":"Token token=xxxxxxxxxxxxxxxxxxxxxx"}
url = 'http://0.0.0.0:3000/api/v1/update_experiment.json'
payload = {'expt_name' : 'A60E001', 'status' : 'done' }
r = requests.patch(url, payload, headers=head)