Faire des requêtes HTTP en Python
14 janvier 2023Imaginons que nous voulions faire une requête vers l’API publique de GitHub,
sur l’URL suivante : https://api.github.com/users/<user>/repos
Dans un premier temps on peut tester avec curl
pour voir à quoi ressemble
le résultat :
curl https://api.github.com/users/nikaro/repos
Pour cet exemple on obtient du JSON en réponse, bonne nouvelle Python sait travailler nativement avec JSON.
urllib
Si on veut utiliser la bibliothèque standard de Python, on peut utiliser
urllib
et
json
.
import json
import urllib.request
# on fait la requête HTTP
response = urllib.request.urlopen("https://api.github.com/users/nikaro/repos")
# on lit le contenu de la réponse
content_bytes = response.read()
# on décode la réponse au format binaire vers texte
content_string = content_bin.decode()
# on parse le texte en tant que JSON afin de "convertir" en objet Python
data = json.loads(content_text)
print(data[0]["html_url"])
httpx
Si on veut se faciliter la vie, surtout quand on commence à faire des choses plus compliqués, on peut utiliser la bibliothèque tierce HTTPX.
import httpx
response = httpx.get("https://api.github.com/users/nikaro/repos")
data = response.json()