Faire des requêtes HTTP en Python

14 janvier 2023

Imaginons 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 = response.read()
# on parse le contenu afin de le "convertir" en objet Python
data = json.loads(content)

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()