urllib.request est le module standard pour faire des requêtes http — sans dépendance externe. Pour des cas plus avancés, beaucoup utilisent la lib tierce requests, mais urllib suffit pour démarrer.
Import
import urllib.request
import jsonurl = 'https://jsonplaceholder.typicode.com/users/1'
with urllib.request.urlopen(url) as response:
data = json.loads(response.read())print(data['name'])
print(data['email'])Étapes
1. urlopen(url) ouvre la connexion HTTP, renvoie une réponse
2. response.read() lit le contenu brut (bytes)
3. json.loads(...) convertit le JSON reçu en dict Pythonurlopen lit en bytes, pas en str. json.loads accepte les deux donc ça passe sans .decode(). Pour du texte brut : response.read().decode('utf-8').
from urllib.error import URLError, HTTPErrortry:
with urllib.request.urlopen(url, timeout=5) as r:
...
except HTTPError as e:
print(f'Erreur HTTP {e.code}') # 404, 500, ...
except URLError as e:
print(f'Erreur réseau: {e.reason}')Le paramètre timeout (en secondes) évite que la requête bloque indéfiniment.
import requests
r = requests.get(url, timeout=5)
r.raise_for_status() # déclenche une exception si code 4xx/5xx
data = r.json() # parsing JSON automatiqueUne api rest expose des ressources via des URLs et des méthodes http :
GET /users/1 lire la ressource
POST /users créer
PUT /users/1 modifier
DELETE /users/1 supprimerLes données sont souvent échangées en json.
jsonplaceholder.typicode.com est une fausse api publique, parfaite pour s'entraîner sans casser un vrai service.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →