Vous êtes sur la page 1sur 52

Rapport API :

Présenté par Cheikh MBENGUE L3 TR Sous la Supervision de :

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 :

Tout d’abord commençons à installer l’environnement de travail comme suivant :

# Virtualenv : pour l’environnement de travail : Pour avoir cet environnement on va taper

la commande suivante :

-pip install virtualenv


Comme vous l’avez remarquer on vient d’installer l’environnement de travail. Maintenant créons
un dossier de travail nommé projet comme suivant :
# mkdir projet
Puis on se déplace sur le dossier comme suivant :
# cd projet
créons l’environnement avec la commande suivante et l’activons le :

#virtualenv venv
#source venv/bin/activate

# Et pour quitter l’environnement on fait desactive :


# Maintenant passons à l’installation de Flask comme suivant :
# pip3 install Flask
II) SÉQUENCE 2 : Structure d’une application Flask et Paramètre de Flask ,route(),run()

1) Premier test avec Flask : Pour cela créons le fichier hello.py et tapons le code ci-dessus :

Maintenant on va exécuter le programme avec la commande suivante :

#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 deux méthode la première méthode est la suivante :

ici on n’a ajouter le hello sur le @app.route (‘/’) c’est à dire là ou on définit les routes :

Maintenant faisons la même chose avec la deuxième méthode :


# Deuxième Méthode
# Teste avec le navigateur :

# Test en ligne de commande avec la commande suivante :

# Curl

3) Quelques types de paramètres supportés par le décorateur route()

3-1) Test du Type Entier :


3-2) Test du Type Réel :

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:

3-3) Test de type de chaîne de caractère (float)

III. Séquence 3 : Construction d’URL et notion de template(url_for, redirect render_template)

III.1. Construction d’URL

Ici on va importer deux fonctions à savoir redirect et url_for comme suivant :

# Test avec un autre Nom différent de admin


IV. Séquence 4 et 5 : verbes HTTP : GET, PUT, POST, DELETE, HEAD : request.form,
request.args.get (import du module request), Template, instructions conditionnelles et boucles
L’objectif de cette séquence est vous montrer comment utiliser les verbes HTTP, utiliser les
templates et leurs faire passer des paramètres selon des critères

# Création de notre première formulaire nommé form.html

# Créons le programme Flask login.py


Puis lançons le programme login.py comme suivant :

# Ouvrons le navigateur pour faire le test comme suivant :

-Entrer un Nom et cliquer sur Valider :

# Observons le résultat obtenu après la validation :


# Teste avec la méthode get sur le navigateur:

IV.2. La notion de Template ou modèle en français

Dans cette étape on va créer le fichier sanstemplate.py:

On lance le navigateur maintenant pour faire le test :

INTRODUCTION AUX TEMPLATES :


Tout d’abord on va créer un sous dossier dans le dossier projet nommé templates comme suivant:
# mkdir templates

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

Maintenant retournons dans le dossier du projet et créeons le fichier template.py

Testons avec le navigateur pour voire le résultat

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 -

Puis on va lancer le programme condition.py comme suivant :

Maintenant on va exécuter le code python en donnant la note suivante : 15

#Testons avec le navigateur


Et après on va aussi exécuter le code en donnant la note suivante :6

IV.3. Boucle Python dans un template

Voici le code du programme boucle.py :

# code du fichier templates/boucle.html

Maintenant lançons le programme avec la commande suivante :


# python3 boucle.py

# Testons avec un navigateur

V. Séquence 6 : La notion de Static : Code Javascript (notion de dossier et fichier.js, feuilles de


style CSS

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

Test avec le navigateur pour voir le résultat :

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 :

a. On crée le fichier templates/etudiant.html contenant notre formulaire comme suit :

b-Crétion du fichier form.py

On crée le fichier templates/result.html de traitement du formulaire comme suit

Maintenat on va lancer le programme form.py et on va procéder au test au niveau du navigateur :


Après avoir remplir les champs on va cliquer sur valider pour visualiser le résultat obtenu :

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 :

b. On crée le programme python upload.py comme suit


Puis on démarre le programme upload.py avec la commande suivante :
#python3 upload.py

Puis on passe au test au niveau du navigateur comme suivant :

On clique sur parcourir pour aller choisir un fichier comme suit :


Aprés validation on obtient le résultat suivant :

VI.1. Objectifs pédagogiques : Les Cookies

a. On crée le fichier templates/cookies.html comme suit :

b. On crée le programme python cookies.py comme suit :


c. On crée le fichier templates/readcookies.html pour afficher les cookies comme suit :

Maintenant on va lancer le programme cookies.py comme suivnat :

Puis on passe au test comme suit :


Aprés avoir cliquer sur connexion on n’a obtenu le résultat suivant :

Aprés on va cliquer sur afficher les cookies pour voire le résultat :

VI.3. Objectifs pédagogiques :Session

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 :

b) On crée le programme python session.py comme suit


On va prendre un navigateur pour faire le test comme suivant :

On clique sur se connecter aprés :

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

On l’exécute comme suit pour créer la base et la table nécessaires :

Installer le logiciel sqlitebrowser pour visualiser la base :

On lance sqlitebrowser en précisant le nom de la base à visualiser :


Les étapes seront les suivantes :
a. Création du fichier templates/accueil.html comme suit :

b. Création du formulaire d’ajout d’étudiant templates/etudiantsqlite.html comme suit :


c. Création du fichier templates/list.html pour l’affichage des étudiants comme suit :

d. Création du programme python sqlite.py comme suit :

e. Création du fichier templates/resultsqlite.html qui affiche le résultat comme suit :


Puis on va lancer un navigateur comme suivant :

Puis cliquons sur ajouter un nouveau étudiant comme suivant :

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 :

b. On copie le programme sqlite.py et on modifie la partie connexion à la base de données comme


suit
c. On crée le programme python mysql.py comme suit :

c. On crée le fichier templates/list.html comme suit :


Puis on lance le programme avec la commande suivante :
# python3 mysql.py

VIII. Séquence 9 : Extensions flask : Mail, WTF, Sqlite, SQLAlchemy

VIII.1.1 . Objectifs pédagogiques :Gestion des formulaires à l’aide de l’extension WTF

Tout d'abord, l'extension Flask-WTF doit être installée.pip install flask-WTF


Le package installé contient une classe Form , qui doit être utilisée en tant que parent pour un
formulaire défini par l'utilisateur.
Le package WTforms contient les définitions de divers champs de formulaire. Certains champs de
formulaire standard sont répertoriés ci-dessous
a. On crée une classe forms.py comme suit :

b. On crée le programme formexemple.py comme suit :

c. On crée le fichier templates/contact.html comme suit :


d. On crée le fichier templates/success.html comme suit :

Après on lance le programme formexemple.py comme suivant :

VIII.1.2. Objectifs pédagogiques :Envoi de mail via l’extension Mail de flask

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

c. On teste dans un navigateur comme suit :


http://localhost:5000/mail/cheikh16mbengue@gmail.com/reunion/toto tape nama

Séquence 10 : Gestion de Multimédia : photo, vidéo, audio

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 :

c. On copie la vidéo dans le dossier static portant le nom demo.mp4


d. On lance le programme video.py et on teste via un navigateur comme suit :

Cas2 : Images

a. On crée un fichier templates/image.html comme suit :

b. On crée le programme python image.py comme suit :


c. On copie l’image sous le nom shovon.jpg dans le dossier static/people_photo/
d. On lance le programme python image.py et on teste via un navigateur comme suit :

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 :

b. On crée le fichier templates/etudiant.html comme suit :


c. le fichier templates/list.html comme suit :

d. on crée le programme python mysql.py comme suit :


e. On lance le programme python et on teste à travers un navigateur comme suit :

Séquence 11 : Paquetage et déploiement

III.1 Flask – Déploiement d’une application à l’aide WSGI sous apache2

a. On installe le module libapache2-mod-wsgi comme suit :


# apt-get install libapache2-mod-wsgi

b. On crée un site virtuel dans /etc/apache2/sites-available/api.conf comme suit :

Vous aimerez peut-être aussi