Exercice 49 / 100

API REST

Une API REST renvoie ses données au format JSON. Parse la chaîne JSON fournie (variable reponse) avec json.loads, puis affiche le name de l'utilisateur, puis son email (chacun sur une ligne).

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 json

Faire une requête GET

url = '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 Python

urlopen 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').

Une réponse d'API s'ouvre comme des enveloppes : urlopen donne la réponse, read() en sort les octets bruts, et json.loads convertit le texte JSON en dictionnaire Python

Gestion d'erreurs courantes

from urllib.error import URLError, HTTPError
try: 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.

Version avec requests (plus simple)

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 automatique

Qu'est-ce qu'une API REST ?

Une 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 supprimer

Les 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.

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →