Mr Ndiaye
1.
Les objectifs de l’EC:
A la fin de l’EC, l’apprenant devrait être capable de :
1.1 Concevoir et développer une API REST avec Python
1.2 Créer des interfaces d’utilisation d’une API
1.3 Sécuriser l’accès à l’API
1.4 Générer le paquetage d’installation d’une API
1.5 Déployer une API en utilisant WSGI avec les serveurs web du marché (apache2, nginx, etc.)
2. Les Prérequis :
•
Pour atteindre les objectifs l’apprenant doit avoir une connaissance de HTML, CSS, et de
Python.
•
Une connaissance de base en JavaScript et en requêtes SQL peut faciliter la compréhension
de cet EC.
•
Une connaissance de base en hébergement et en activation de modules Apache est un atout
pour mieux aborder cet EC.
Notamment les prérequis nécessaires : les formulaires, les tableaux, les feuilles de style,
2.
Séquences de l’EC:
3.1 Séquence 1 : Environnement de développement
3.2 Séquence 2 : Structure d’une application flask et paramètres de Flask, route(), run().
3.3 Séquence 3 : Construction d’url et notion de template(url_for, redirect render_template)
3.4 Séquence 4 : verbes HTTP : GET, PUT, POST, DELETE, HEAD :
request.form,
request.args.get (import du module request)
3.5 Séquence 5 : Inclusion du code Python dans les templates (pages html) : instructions
conditionnelles et boucles
3.6 Séquence 6 : La notion de Static : Code Javascript (notion de dossier et fichier.js, feuilles de
style CSS
3.7 Séquence 7 : Les Objets de requêtes : Formulaire, args, fichier, cookies, methodes
3.8 Séquence 8 : Utilisation d’importation de modules python de base de données dans Flask
3.9 Séquence 9 : Extensions flask : Mail, WTF, Sqlite, SQLAlchemy
3.10 Séquence 10 : Gestion de Multimédia : photo, vidéo, audio
3.11 Séquence 11: Paquetage et déploiement
3.12 Séquence 12: Étude du module RESTFul de flask
3.13 Séquence 13 : Sécurité API : authentification
3.14 Séquence 14 : Synthèse sur les interfaces d’utilisation d’API
TP Développement API :
la commande suivante :
#virtualenv venv
#source venv/bin/activate
1) Premier test avec Flask : Pour cela créons le fichier hello.py et tapons le code ci-dessus :
#python3 hello.py
Une fois lancer le programme on va tester avec la commande curl en ligne de commande :
#Testons aussi avec le navigateur pour voire ceux qui va se passer :
2) Accès directe à une page sans passer forcément par la page d’accueil
ici on n’a ajouter le hello sur le @app.route (‘/’) c’est à dire là ou on définit les routes :
# Curl
Ici on vient de remarquer si on appelle le programme avec un paramètre de type réel on obtient une
erreur comme vous le montre la figure ci-dessus:
Une fois créer le sous dossier on va se déplacer sur ce sous dossier comme suivant :
# cd templates et on crée le fichier hello.html
NB :Noter que le template hello.html reçoit le paramètre name et noter bien comment on l’a écrit
dans le
template {{ name }}.
Dans l'exemple suivant, l'utilisation de l'instruction conditionnelle dans le modèle est démontrée. La
règle d'URL de la fonction hello() accepte le paramètre entier. Il est transmis au modèle
Devoir.html .
# crées le fichier devoir.html comme suivant :
À l'intérieur, la valeur du nombre reçu (marques) est comparée (supérieure ou inférieure à 50) et, en
conséquence, le code HTML est restitué sous forme conditionnelle.
Le script Python condition.py est comme suit -
Tout d’abord pensons à créer un sous dossier nommé static dans le dossier projet comme suivant :
# mkdir static
# Fichier static.py
#fichier templates/static.html
Création du fichier hello.js
Une fois ici on va cliquer sur le bouton et on va voire que c’est le code java script qui va exécuter
comme suit :
Exemple d’envoi de formulaire à un programme flask
-Application :
VI. Séquence 7 : Les Objets de requêtes : Formulaire, args, fichier, cookies, methodes
Le code suivant contient la règle d'URL '/upload' qui affiche 'upload.html' à partir du dossier des
modèles et la règle d'URL '/upload-file' qui appelle le processus de téléchargement chargé de la
fonction uploader () .
'upload.html' a un bouton de sélection de fichier et un bouton d' envoi .
a. On crée le fichier templates/upload.html comme suit :
Le code suivant est une démonstration simple des travaux de session dans Flask. L'URL '/' invite
simplement l'utilisateur à se connecter, car la variable de session 'username' n'est pas définie.
a) On crée le fichier templates/session.html comme suit :
On vient de renseigner le champ du login maintenant on va valider pour voire le résultat obtenu :
VII. Séquence 8 : Utilisation d’importation de modules python de base données dans Flask
VII.1 Utilisation de la base de données SQLite
Prérequis :
Installer le paquet sqlite3 pour la gestion des bases de données SQLite comme suit :
On écrit le programme python sqlitecreate.py pour créer une base de données SQLite
'database.db' et créez-y une table d'étudiants
Aprés on va valider pour voire ceux que nous allons obtenir comme résultat :
Puis on va cliquer sur ceux pour retourner à la page d’accueil et on va cliquer sur lister pour lister
les étudiants :
VII.2 Utilisation de base de données Mysql
On installe le module python-mysqldb pour pouvoir utiliser une base de données dans un
programme python comme suit :
a. On se connecte au serveur mysql pour créer la base de données ecole et la table etudiants comme
suit :
L'extension Flask-Mail facilite la configuration d'une interface simple avec n'importe quel serveur
de messagerie.
Au début, l'extension Flask-Mail doit être installée à l'aide de l'utilitaire pip.
pip install Flask-Mail
Ensuite, Flask-Mail doit être configuré en définissant les valeurs des paramètres d'application
suivants :
a. On crée le programme python mail.py comme suit :
b. Notez que les fonctionnalités d'insécurité intégrées au service Gmail peuvent bloquer cette
tentative de connexion. Vous devrez peut-être diminuer le niveau de sécurité. Connectez-vous à
votre compte Gmail et visitez ce lien pour autoriser :
https://myaccount.google.com/lesssecureapps?pli=1
Cas 1 : Vidéo
a. On crée le fichier template templates/video.html comme suit :
b. On crée le programme python video.py comme suit :
Cas2 : Images
Programme permettant d’inscrire les étudiants avec leur photo dans une base de données et les
affichera. On crée le fichier templates/index.html comme suit :