IUT
Cours Info
IUT Paris 8 — BUT Informatique
Moodle
Accueil
R5c4
Seance 5
Quiz
Avancé
Quiz — Séance 5
Quel est le principal avantage de passer par HTTP plutôt qu'importer directement le repository ?
HTTP est plus rapide que l'import direct
Le dashboard et l'API sont découplés — déploiement séparé, clients multiples
Python ne permet pas d'importer des modules entre projets
HTTP gère automatiquement le cache des données
Quelle bibliothèque Python est utilisée pour effectuer des requêtes HTTP dans ce cours ?
urllib3
httpx
requests
aiohttp
Que retourne response.json() ?
Une chaîne de caractères JSON
Un objet Response
Un dictionnaire ou une liste Python
Un DataFrame pandas
Pourquoi faut-il utiliser le paramètre params au lieu d'une f-string pour les query strings ?
Les f-strings sont interdites avec requests
params est plus rapide à l'exécution
params encode automatiquement les caractères spéciaux et ignore les valeurs None
params est obligatoire pour les requêtes GET
Que se passe-t-il si le serveur retourne un code 500 et qu'on n'appelle pas raise_for_status() ?
Une exception est levée automatiquement
response.json() retourne None
Aucune exception — il faut vérifier response.ok ou response.status_code manuellement
Le programme se termine immédiatement
Quelle exception est levée par requests quand le serveur Flask n'est pas lancé ?
requests.exceptions.Timeout
requests.exceptions.ConnectionError
requests.exceptions.HTTPError
ConnectionRefusedError
À quoi sert st.stop() dans la gestion d'erreurs ?
Arrêter le serveur Flask
Arrêter l'exécution du script Streamlit à cet endroit
Annuler la requête HTTP en cours
Fermer la connexion réseau
Que fait raise_for_status() si le code HTTP est 200 ?
Lève une exception HTTPError
Retourne True
Ne fait rien (aucune exception)
Retourne le code 200
Pourquoi CORS ne bloque-t-il pas les appels faits avec requests en Python ?
Parce que localhost est toujours autorisé par CORS
Parce que requests utilise un protocole spécial
Parce que CORS est une protection navigateur, et requests n'utilise pas de navigateur
Parce que flask-cors est installé par défaut
Quelle commande installe le support CORS pour Flask ?
pip install cors
pip install flask-cors
pip install flask-security
pip install flask-headers
Quel code HTTP indique que la clé d'API est manquante ou invalide ?
400 (Bad Request)
401 (Unauthorized)
403 (Forbidden)
404 (Not Found)
Où stocker la clé d'API côté Streamlit ?
Dans une variable directement dans le code
Dans le fichier requirements.txt
Dans .streamlit/secrets.toml (ajouté à .gitignore)
Dans le fichier de configuration Streamlit
Quel outil utilise Flask pour charger les variables d'environnement depuis un fichier .env ?
flask-env
python-dotenv
os.loadenv()
configparser
Quel est l'avantage principal de requests.Session() par rapport à requests.get() direct ?
Session est plus simple à écrire
Session gère automatiquement les erreurs HTTP
Session réutilise la connexion TCP et conserve les headers entre les requêtes
Session est obligatoire pour envoyer des headers personnalisés
Pourquoi les méthodes publiques de VentesAPIClient retournent-elles un DataFrame plutôt que le JSON brut ?
Parce que JSON est incompatible avec Python
Pour encapsuler la conversion et offrir une interface claire au code Streamlit
Parce que les DataFrames sont plus petits en mémoire
Parce que Streamlit ne peut pas afficher du JSON
Quel décorateur Streamlit utiliser pour instancier VentesAPIClient une seule fois ?
@st.cache_data
@st.cache_resource
@st.singleton
@st.experimental_memo
Dans la classe VentesAPIClient, pourquoi la méthode _get est-elle préfixée d'un underscore ?
C'est obligatoire en Python pour les méthodes privées
C'est une convention Python indiquant que la méthode est interne (privée)
Cela empêche la méthode d'être appelée depuis l'extérieur
C'est requis par requests.Session
Quelle est la différence entre un code 401 et un code 403 ?
401 = serveur en erreur, 403 = client en erreur
401 = authentification manquante/invalide, 403 = authentifié mais pas autorisé
401 = requête trop lente, 403 = requête bloquée par CORS
Il n'y a pas de différence, les deux signifient 'accès refusé'
Précédent
Exercices
Suivant
Conclusion