Paramètres de tableau Querystring dans Python à l'aide de requêtes
J'ai été à essayer de comprendre comment utiliser python-requests
pour envoyer une demande à l'url ressemble à:
http://example.com/api/add.json?name='hello'&data[]='hello'&data[]='world'
Normalement, je peux construire un dictionnaire et à faire:
data = {'name': 'hello', 'data': 'world'}
response = requests.get('http://example.com/api/add.json', params=data)
Qui fonctionne très bien pour la plupart tout ce que je fais. Cependant, j'ai frappé la structure de l'url à partir de ci-dessus, et je ne suis pas sûr de la façon de le faire en python sans créer manuellement des chaînes de caractères. Je peux le faire, mais plutôt de ne pas.
Est-il quelque chose dans les demandes de la bibliothèque, je suis absent ou python fonctionnalité que je ne suis pas au courant?
Aussi ce faire vous même appeler ce type de paramètre afin que je puisse mieux google?
source d'informationauteur percent20
Vous devez vous connecter pour publier un commentaire.
Ce que tu fais est correct. La résultante de l'url est même ce que tu attend.
u peut voir la résultante url:
Selon format d'url:
En particulier, le codage de la chaîne de requête utilise les règles suivantes:
.
,-
,~
et_
sont laissés en l'+
ou%20
Donc
array[]
ne sera pas comme prévu et sera automatiquement remplacé selon les règles:Si vous générez une url comme :
Sortie sera:
C'est parce que la Duplication sera remplacé par la dernière valeur de la clé dans l'url et
data[]
sera remplacé pardata%5B%5D
.Si
data%5B%5D
n'est pas le problème(Si le serveur est en mesure d'analyser correctement),alors u peut aller de l'avant.Lien Source
Tout ce que vous devez faire est de le mettre sur une liste, de sorte que la clé que liste comme chaîne:
Une solution si vous utilisez les demandes module n'est pas obligatoire, est à l'aide de la
urllib
/urllib2
combinaison:Il est un peu plus détaillé et utilise la macro(uence) astuce pour encoder les paramètres de l'url mais j'ai dû utilisé quand je ne savais pas à propos de la demande de module.
Pour les demandes module de la réponse fournie par @Tomer devrait fonctionner.