OUTMAN DJIDDA
MOUSSA OUTMAN
Objectifs :
a- Installation et utilisation des environnements de développement et de consommation des
API REST
b- Savoir utiliser des clients HTTP avancés pour consommer une API REST
1 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Sommaire :
1- Installer nodejs version sup ou égale à 16
2- Installer le serveur Json simulant une API grâce à la commande npm fournie par
nodejs
3- Démarrer le serveur json sur un port souhaité
4- Installer les clients avancés HTTP Curl et Postman
5- Utiliser les clients HTTP avancés pour consommer l’API (lecture, création, mise à
jour, suppression)
A- Installation de l’environnement de développement
Informations :
L’une des règles à respecter par une API REST-full est que les données doivent être
échangées au format json.
Quand on veut s’entraîner à développer coté frontend, on peut utiliser le serveur json
pour émuler une API respectant les règles REST-Full afin de se concentrer sur des
technologies de développement Frontend
Installation de nodejs
On installe tout d’abord curl et on utilise le client curl pour télécharger le script d’installation de
gestionnaire de paquet nvm en tapant la commande :
root@outman-HP: ~# curl -sL https://raw.githubusercontent.com/nvm-
sh/nvm/v0.35.0/install.sh -o install_nvm.sh
Installation de CURL et utilisation de client(curl) pour télécharger le script d’installation de
gestionnaire de paquet nvm
On exécute le script en tapant la commande :
root@outman-HP: ~# bash install_nvm.sh
2 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Exécution du script
On active les variables d’environnement en tapant la commande :
root@outman-HP: ~# source ~/.profile
Pour vérifier les versions de nodejs disponibles en tapant la commande :
root@outman-HP: ~# nvm ls-remote
vérification de la version
On constate que la version LTS (long-term support qui désigne une version spécifique d'un
logiciel dont le support est assuré pour une période plus longue que la normale) qui est la
version normale(stable) c’est-à-dire la version récente qui est 16.13.0
3 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Pour l’installation de cette version actuelle, on tape la commande :
root@outman-HP: ~# nvm install 16.13.0
installation de nvm V16.13.0
Pour avoir le format Json, on va sur le lien :
https://zetcode.com/javascript/jsonserver/
Pour télécharger une liste d’items stockés au format json et la sauvegarder dans un fichier texte,
par exemple users.json
On édite le fichier nano users.json
{ "users":
[
{ "id": 1,
"first_name": "Robert",
"last_name": "Schwartz",
"email": "
[email protected]" },
{ "id": 2,
"first_name": "Lucy",
"last_name": "Ballmer",
"email": "
[email protected]" },
{ "id": 3,
"first_name": "Anna",
"last_name": "Smith",
"email": "
[email protected]" },
{ "id": 4,
"first_name": "Robert",
4 fait par OUTMAN DJIDDA MOUSSA OUTMAN
"last_name": "Brown",
"email": "
[email protected]" },
{ "id": 5,
"first_name": "Roger",
"last_name": "Bacon",
"email": "
[email protected]" }
]
}
Pour sauvegarder cette liste d’items on crée un dossier en tapant la commande :
root@outman-HP: ~# mkdir djiddam2
On se place dans le dossier en faisant cd nom du dossier et on exécute la commande nano
users.json pour stocker et sauvegarder le fichier texte à travers la commande :
root@outman-HP: ~/djiddam2# nano users.json
fichier éditer
5 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Il y a des prérequis pour utiliser le serveur json. Il faut avoir installer la version 16 ou plus de
nodejs qui un langage de programmation basé sur javascript (nodejs marche aussi bien sous
Linux que Windows).
Installation et lancement du serveur json pour qu’il écoute sur le port 5000
Pour installer nodejs on tape la commande :
root@outman-HP: ~# npm i -g json-server
Pour lancer nodejs on tape la commande :
root@outman-HP: ~/djiddam2# json-server -p 5000 users.json
NB : on lance le serveur sur un autre terminal
Les actions qu’on peut faire sur le serveur :
Utilisation du verbe HTTP :
1- GET /users pour lister tous les items
2- POST /users avec des données au format json pour créer un nouvel item
3- PUT users/id avec des données au format json pour modifier l’item dont l’id est fourni
4- DELETE users/id pour supprimer un item dont l’id est fourni
6 fait par OUTMAN DJIDDA MOUSSA OUTMAN
NB : Il faut malheureusement noter qu’un navigateur ne peut utiliser que par défaut le verbe
GET, c’est pourquoi il est important de faire à un client avancé tel que curl ou postman
capables d’utiliser tous les verbes HTTP curl et postman marchent aussi bien sous Windows
que Linux. Curl fonctionne en mode texte tandis que postman fonctionne en mode graphique
Pour installer postman sous Linux on tape la commande :
root@outman-HP: ~# apt install snap
Installation de Postman en tapant la commande :
root@outman-HP: ~# snap install postman
On lance Postman en graphique
7 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Création de compte chez les développeurs de json On peut s’authentifier avec son compte
Gmail pour avoir pour la première fois l’interface de Postman
interface de postman après création de compte
Après on clique sur create new pour avoir l’interface suivante :
Interface de create new
8 fait par OUTMAN DJIDDA MOUSSA OUTMAN
interface get liste des items générés par l’API
9 fait par OUTMAN DJIDDA MOUSSA OUTMAN
En saisissant dans le champ url à coté de GET localhost:5000/users et en validant en cliquant
sur send (envoyer), on obtient la liste des items qui sont sur le serveur json simulant une API
REST
On utilise POST pour créer un nouvel item avec id 6
Pour afficher la liste et voir le nouvel item dont l’id est 6 on tape la commande :
root@outman-HP: ~/tpEstm# Cat users.json
liste des items
10 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Passons à la mise à jour des items on utilise pour cela la méthode PUT et sur l’url on met à la
fin l’id à mettre à jour exemple : localhost :5000/users/6
Mis à jour d’un item dont l’id est 6
11 fait par OUTMAN DJIDDA MOUSSA OUTMAN
item mis à jour
Passons maintenant à la suppression de données on va supprimer l’item d’id 6
suppression d’un item d’id 6
12 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On part dans la base de données users.json pour confirmer si l’item a été supprimé
Vérification de l’item supprimé
13 fait par OUTMAN DJIDDA MOUSSA OUTMAN
NB : on constate les verbes sont bien exécutés sur le second terminal ouvert pour lancer le
serveur
liste de verbes exécutés avec succès
CURL est un outil de ligne de commande et comprend une bibliothèque. Il prend en charge la
plupart des protocoles pour faciliter le transfert de données avec la syntaxe d'URL. Par défaut,
lorsqu’on installe un système d'exploitation Ubuntu, ce programme est préinstallé. Et on peut le
tester avec la commande suivante :
root@outman-HP: ~# curl –help
Pour installer curl on tape la commande :
root@outman-HP: ~# apt install curl
Après avoir terminé l'installation, on peut examiner la version de curl en exécutant la
commande :
root@outman-HP: ~# curl --version
14 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Si notre Ubuntu n'a pas installé curl, on peut l'installer par l'exécution des commandes ci-
dessous :
NB : Pour pouvoir exécuter des taches il faut d’abord être administrateur (root).
root@outman-HP: ~#apt update
Pour voir la liste des paquets pouvant être mis à jour on tape la commande :
root@outman-HP: ~# apt list upgradable
Afin de pouvoir les mettre à jour on tape la commande :
root@outman-HP: ~# apt upgrate
Maintenant on passe à l’utilisation des clients HTTP avancés pour consommer l’API (lecture,
création, mise à jour, suppression) c’est à dire à l’exécution des commandes qui sont les
suivants :
- GET
- POST
- PUT
- DELETE
Démarrer le serveur json sur un port souhaité
15 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Pour l’exécution du verbe HTTP il faut démarrer le serveur json qui a pour port d’écoute 5000
et qui est dans le fichier users.json du dossier djiddam2 en tapant la commande :
root@outman-HP: ~/tpEstm# json-server -p 5000 users.json
Démarrage du serveur
NB : Cela doit se faire sur un autre terminal
Pour lister un jeu de données dans un fichier avec curl en utilisant GET on tape la commande :
root@outman-HP: ~# curl http://localhost:5000/users
GET
16 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Pour l’ajout d’un jeu de données dans un fichier sur curl en utilisant POST on tape la
commande :
root@outman-HP: ~# curl -X POST -d id=6 -d first_name=example -d last_name=example -d
email=example@example http://localhost:5000/users
POST
Pour mettre à jour d’un jeu de données avec curl on utilise PUT en tapant la commande :
root@outman-HP: ~# curl -X PUT -d id=6 -d first_name=example -d last_name=example -d
email=example@example http://localhost:5000/users/6
NB : On précise toujours l’id en mettant d’abord / suivi de l’id dans notre cas l’id est égale à 6
17 fait par OUTMAN DJIDDA MOUSSA OUTMAN
PUT
Pour voir si c’est bien mis à jour on doit s’assurer qu’on est dans le dossier qui contient le
fichier ayant le jeu de données et on vérifie avec la commande :
root@outman-HP: ~/tpEstm# cat users.json
Liste de put
18 fait par OUTMAN DJIDDA MOUSSA OUTMAN
En fin pour la suppression d’un jeu de données avec curl on tape la commande :
root@outman-HP: ~# curl -X DELETE http://localhost:5000/users/6
NB : On précise toujours l’id en mettant d’abord / suivi de l’id dans notre cas l’id est égale à 6
DELETE
Pour voir si c’est bien supprimé on doit s’assurer qu’on est dans le dossier qui contient le
fichier ayant le jeu de données et on vérifie avec la commande :
root@outman-HP: ~/tpEstm# cat users.json
Liste DELETE
19 fait par OUTMAN DJIDDA MOUSSA OUTMAN
En fin on peut voir toutes les requêtes qui sont exécutées dans le second terminal qu’on a lancé
le serveur json
Requête exécuté sur le serveur
Préambule :
On suppose que vous avez déjà lancer le serveur Json ecoutant sur le port 5000 simulant une
API RESTfull
Introduction :
cURL (client URL request library) est une librairie qui permet de communiquer avec de
nombreux types de serveurs et en utilisant les protocoles standards
(HTTP,HTTPS,FTP,Telnet,LDAP,etc.). Il est possible d'utiliser des proxys lors de la
communication. Cette librairie est vitale pour s'interfacer avec des API's (Application
Programming Interface) qu'elles soient REST, SOAP ou autre. cURL supporte les méthodes de
requêtes en READ,GET et POST ainsi qu'en PUT et DELETE.
HEAD : sert à récupérer l'en-tête d'une page internet sans le corps de la page. Ce genre de
requête offre l'avantage d'être très légère lors de son exécution aussi bien en ressource qu'en
bande passante, elle est parfaite pour contrôler si un site internet répond.
GET : la méthode GET demande au serveur distant la page (ou le fichier) dans les standards ce
type de méthode sert uniquement à récupérer des données.
POST : la méthode POST sert à envoyer au serveur distant les données (ressources) indiquées.
20 fait par OUTMAN DJIDDA MOUSSA OUTMAN
PUT : la méthode PUT sert à mettre à jour
DELETE : la méthode DELETE sert à supprimer
Installation de curl php sous Linux
Pour faire du HTTP c’est-à-dire un serveur web on installe d’abord apache2 en tapant la
commande :
apt install apache2
Pour qu’apache puisse exécuter du code php on installe php en tapant la commande :
apt install php
21 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Après avoir installé apache2 et php on doit aussi installer la librairie d’apache en tapant la
commande :
Apt install libapache2-mod-php
On va dans /var/www/html on crée un dossier appelé tp en faisant mkdir tp et on se place dans
le dossier tp en faisant cd tp/ en tapant la commande :
root@outman-HP: /var/www/html#mkdir tp
root@outman-HP: /var/www/html#cd tp/
22 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On édite le fichier exo1.php pour coller la requête curl convertie en programme php par un
utilitaire de conversion en tapant la commande :
nano exo1.php
Pour que le serveur apache puisse exécuter un programme php sur le navigateur on doit
s’assurer si on a installé tous les paquets nous permettant d’exécuter ce programme. Pour cela
on doit consulter le fichier log pour voir les paquets manquants ou il y’a erreur de syntaxe en
tapant la commande :
Tail -f /var/log/apache2/error.log
On constate qu’a la ligne2 que curl_init() est indéfini ce qui signifie qu’on a pas installé
l’extension php-curl. Pour cela on installe l’extension en tapant la commande :
apt install php-curl
23 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On redémarre le serveur en tapant la commande :
service apache2 restart
Après on va sur le navigateur et on actualise
NB : Pour accéder à site héberger par dossier, comme c’est un sous dossier du document root
de notre serveur apache qui est /var/www/html/ si on crée un sous dossier dans ce document
root pour y accéder à l’application via au navigateur web on fait :
L’adresse du serveur/ le nom du dossier/ le nom du programme
On édite le fichier nano exo2.php pour coller le programme généré par la commande qui permet
de créer un utilisateur (POST)
24 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Après on va sur le navigateur et on actualise
On édite le fichier nano exo3.php pour coller le programme généré par la commande qui permet
de mettre à jour un utilisateur (PUT)
Après on va sur le navigateur et on actualise
On édite le fichier nano exo4.php pour coller le programme généré par la commande qui permet
de supprimer un utilisateur (DELETE)
25 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On va sur le navigateur et on actualise
On édite le fichier formulaire.html
On lance sur le navigateur
On édite test1.php
26 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On va sur le navigateur et on actualise
Modifions test1
On va sur le navigateur et on actualise
Rappelons le formulaire
27 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On saisit les champs et on valide
On actualise le navigateur
Modifier le fichier formulaire.html pour qu’il appelle exo1.php
On édite le fichier exo1.php pour la requête POST
28 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On va sur le navigateur et on actualise
On édite le fichier formput.html
On édite le fichier modif.php pour la requête PUT
29 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On va sur le navigateur et on actualise
Résultat :
On édite le fichier delete.php pour la requête DELETE
30 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On édite le fichier formdelete.html
On actualise le navigateur on saisit le champ et on valide
Résultat :
On édite le fichier read.php pour la requête READ
31 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Résultat sur le navigateur qui affiche sous forme de tableau le READ
Résultat sur le navigateur
32 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Sur le terminal ou on a lancé le serveur json on contate que tous les requetes tapés sont
affichées
33 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Prérequis :
Pour cela, installons les paquets : mysql-server python3 python3-tk, mysql,connector
On fait d’abord une mise à jour des paquets
34 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On installe mysql-server
On install python3 python3-tk
35 fait par OUTMAN DJIDDA MOUSSA OUTMAN
1- On nous demande créer la base de données banque et donner tous les droits à l’utilisateur
Djidda identifié par le mot de passe passer
mysql> create database banque;
mysql> use banque
Database changed
mysql> create table clients(id int primary key auto_increment, prenom varchar(20), nom
varchar(20), numcompte varchar(50), code int, solde varchar(20));
mysql> grant all privileges on banque.* to djidda identified by 'passer';
36 fait par OUTMAN DJIDDA MOUSSA OUTMAN
2- Insérons deux utilisateurs Hissein Habre et Idriss Deby comme suit :
mysql> insert into clients(prenom,nom,numcompte,code,solde)
values("Hissein","Habre","00001h",0001, "10000000"); ,
mysql> insert into clients(prenom,nom,numcompte,code,solde)
values("Idriss","Deby","00002i",0002, "50000000");
3- Créons un dossier dans notre répertoire personnel appelé tpjeudi
:~# mkdir tpjeudi
:~# cd tpjeudi/
4- Allons dans le dossier tpjeudi et installons le module mysql.connector pour permettre à
mysql de se connecter à une base de type mysql
:~# apt install mysql.connector
37 fait par OUTMAN DJIDDA MOUSSA OUTMAN
5- Créons le programme sgbs.py contenant la fonction database() de connexion à la base
banque et lecture permettant de retourner les information de la table clients :
import mysql.connector
def database():
global conn,cursor
conn=mysql.connector.connect(host="localhost",user="djidda",passwor="
passer",database= "banque")
cursor=conn.cursor()
def lecture():
sql="select * from clients"
database()
cursor.execute(sql)
tab=cursor.fetchall()
return(tab)
result=lecture()
print(result)
38 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Quand on exécute le programme, on obtient :
outman@outman-HP :~/tpjeudi$ sudo python3 sgbs.py [(1, 'Hissein', 'Habre', '00001h',
1, '10000000'), (2, 'Idriss', 'Deby', '00002i', 2, '50000000')]
6- Ecrivons la fonction insérer (prénom, nom,numcompte,code,solde) permettant d’insérer
un utilisateur dans la table clients
def inserer(prenom,nom,numcompte,code,solde):
sql="insert into clients (prenom, nom, numcompte, code, solde) values (%s, %s, %s, %s,
%s)"
database()
val = (prenom, nom, numcompte, code, solde)
cursor.execute(sql, val)
conn.commit()
inserer("Mahamat","Deby","0003D", 3, "40000000")
result=lecture()
print(result)
39 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Résultat :
outman@outman-HP :~/tpjeudi$ sudo python3 sgbs.py
[(1, 'Hossein', 'Habre', '00001h', 1, '10000000'), (2, 'Idriss', 'Deby', '00002i', 2,
'50000000'),(3, 'Mahamat', 'Deby', '0003D', 3, '40000000')]
NB : Quel que soit le type de données remarquer %s
7- Créons la fonction update(id,solde) qui modifie le compte dont l’id est founi et remplace
l’id et solde
def update(id,solde):
sql="update clients set solde=%s where id=%s"
database()
val = (solde,id)
cursor.execute(sql, val)
conn.commit()
update("750000000", 2)
result=lecture()
print(result)
40 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Résultat :
outman@outman-HP :~/tpjeudi$ sudo python3 sgbs.py
[(1, 'Hissein', 'Habre', '00001h', 1, '10000000'), (2, 'Idriss', 'Deby', '00002i', 2,
'75000000'),(3, 'Mahamat', 'Deby', '0003D', 3, '40000000')]
8- Créons la fonction delete(solde) permettant de supprimer un utilisateur dont le solde est
fourni
def delete(solde):
sql="delete from clients where solde=%s"
database()
val = (solde,)
cursor.execute(sql, val)
conn.commit()
delete("10000000")
result=lecture()
print(result)
41 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Résultat :
outman@outman-HP :~/tpjeudi$ sudo python3 sgbs.py
[(2, 'Idriss', 'Deby', '00002i', 2, '75000000'), (3, 'Mahamat', 'Deby', '0003D', 3,
'40000000')]
NB : on a défini val dans delete comme un tuple val = (solde,)
On a vu deux (2) notions
- la notion de gestionnaire de paquetage python qui est pip
- la notion de créer un environnement selon la version de son python on installe un éditeur vim
pour cela on fait :
42 fait par OUTMAN DJIDDA MOUSSA OUTMAN
apt install vim
1 -préparer l’environnement de développement en installant :
pip3 install virtualenv
2- on
Crée un projet(dossier) en tapant la commande :
mkdir newprojet
On se place sur le dossier qui va contenir tous notre environnement en tapant
cd newprojet
On crée l’environnement en faisant :
virtualenv venv
On fait ls on verra qu’il a créé un dossier
Pour activer l’environnement on fait
43 fait par OUTMAN DJIDDA MOUSSA OUTMAN
source venv/bin/activate
Pour se déconnecter de cet environnement on fait :
exit pour sortir de l’environnement
Si on veut installer le framework flask on fait :
pip3 install flask
Pour écrire un programme en flask on édite un fichier sous le nom de Hello.py
on a 4 phases
from flask import Flask : on importe le module Flask
app = Flask(__name_₎ : on définit l’application
44 fait par OUTMAN DJIDDA MOUSSA OUTMAN
@app.route('/') : on définit une route
def hello_world():
return "Bonjour tout le Monde"
if __name__ == '__main__': : on démarre l’application
app.run()
Pour faire démarrer l’application on fait :
python Hello.py
45 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On ouvre un navigateur et on tape :
http://localhost:5000/
Pour changer l’url qu’il soit outman on édite le fichier Hello.py
On
lance python Hello.py
46 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On va sur le navigateur et on tape l’url
Pour changer l’adresse ip pour qu’il écoute sur n’importe quelle adresse ip qu’on veut qui est
0.0.0.0 et que son port d’écoute est 8000 on fait :
47 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Quand on exécute le programme on voit :
On lance un navigateur en indiquant l’adresse ip et le port d’écoute :
http://192.168.1.3:8000/outman
48 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Pour faire passer des paramètres a une application (dans la route on met le nom du paramètre)
et récupérer le paramètre dans le programme on fait :
On a le résultat sur le navigateur :
49 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Pour préciser le type du paramètre (int : accepte les entiers, float : accepte les réels, string :
accepte les chaînes de caractères, path : accepte les chemins de fichiers) on fait :
from flask import Flask
app = Flask(__name__)
@app.route('/outman/<int:nom>')
def hello_world(nom):
return "Bonjour %s"%nom
if __name__ == '__main__':
app.run(host='0.0.0.0',port=8000,debug = True)
On a activé debug a true pour que s’il y’a erreur il nous affiche
50 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Le Résultat
Si on veut remplacer des entiers par des réels a la place de int on met float
from flask import Flask
app = Flask(__name__)
@app.route('/outman/<float:nom>')
def hello_world(nom):
return "Bonjour %s"%nom
if __name__ == '__main__':
app.run(host='0.0.0.0',port=8000,debug = True)
51 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Résultat
Quand on veut utiliser une variable dans une chaîne de caractère on peut formater en mettant f
devant les chaînes et les variables entre accolade
52 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Résultat :
L’API est l'acronyme d'Application Programming Interface, que l'on traduit en français par
interface de programmation applicative ou interface de programmation d'application est outils
permettant de rendre de l’information et des fonctionnalités accessibles via internet
Les paquets suivants sont indispensables pour le fonctionnement de notre API :
53 fait par OUTMAN DJIDDA MOUSSA OUTMAN
1-Installer les paquets suivants :
# apt install python3-pip ok
# pip3 install flask
# pip3 install flask-restx
Installation de flask
Installation de pip3 install flask-restx
54 fait par OUTMAN DJIDDA MOUSSA OUTMAN
-
Création d’un environnement virtuel (virtualenv)
Virtualenv est un outil permettant de créer des environnements virtuels python isolés. Cet outil
va créer un dossier contenant tous les exécutables nécessaires pour utiliser notre projet.
# virtualenv -p python3 flaskApi
Une fois l’environnement crée il faut l’installer avec la commande suivante :
# source flaskApi/bin/activate
55 fait par OUTMAN DJIDDA MOUSSA OUTMAN
2- Création de notre application crud.py
Comme on a chargé d’environnement, j’installe le module de mysql dans mon nouvel
environnement :
56 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On installe flask en tapant la commande :
pip3 install flask
On installe le module flask-restx
57 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On lance python3 Apiglobal.py
On teste dans un navigateur
58 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On clique la flèche sur la ligne de POST
On consulte notre table clients en ligne de commande :
59 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Puis sur l’interface de l’API, on va ajouter Macky Sall
Pour cela, on clique sur try it out et on remplit les champs :
60 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On clique sur exécute
En consultant la base de données en ligne de commande, on constate que Macky Sall a été bien
ajouté
61 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On a ainsi réussi notre premier API restfull.
Notre API fournit de la documentation et une interface nous permettant de la tester avant de le
mettre à disposition aux développeurs frontend qui vont créer des interfaces de consommation
Maintenant créons trois autres classes pour lecture, modification et suppression
62 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Lançons l’API et testons
Teste sur le navigateur
En cliquant sur lecture de comptes puis try it out, on obtient :
63 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On teste la mise à jour du compte de Mahamat Deby et on valide
64 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On vérifie dans la base de données en ligne de commande :
On constate que le compte de Mahamat Deby a été modifié
Passons maintenant au test de suppression (delete)
65 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Dans l’interface de lecture, on constate que Idriss Deby a été bien supprimé.
On vérifie dans la base de données en ligne de commande :
66 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On constate que Idriss Deby a été bien supprimé.
Conclusion : Nous avons réussi à mettre en place une API restfull
On peut maintenant se mettre à la place du développeur frontend pour créer des interfaces de
consommation comme on l’a fait au début du cours
On install asterisk en tapant la commande :
apt install asterisk
67 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On va dans le dossier /etc/asterisk en tapant :
cd /etc/asterisk/
On crée des comptes à des utilisateurs dans le fichier /etc/asterisk/ en éditant le fichier sip.conf
[2000] : le nom du compte
type= friend :permet à ce compte d’appeler et de recevoir des appels
context=rtn : le nom du groupe d’appels
host= dynamic : ce compte peut être utilisé de partout
secret=passer : le mot de passe
On édite le fichier en faisant nano sip.conf
68 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Le groupe d’appels et les numéros de téléphones dans le fichier
/etc/asterisk/extensions .conf a la dernière ligne on ajoute le [nomcontexte] exten = numéro
commençant par 2XXX, la priorité 1, Dial(SIP/nomcompte) ; on peut déclarer plusieurs
numéros en une seule ligne, si on utilise comme nom de compte des numéros ; la variable
${EXTEN} veut dire le numéro composé ; l’option 40 veut dire que le téléphone peut sonner
pendant 40 seconde ; l’option t veut dire que la personne peut transférer son appel et r que ça
doit sonner
exten => _2XXX,1,Dial(SIP/${EXTEN},40,tr) cette ligne déclare tous les numéros allant 2000
à 2999 et permet d’appeler les comptes 2000 à 2999 soit 1000 numéros
[rtn]
exten= _2XXX,1,Dial(SIP/${EXTEN},40,tr)
On édite le fichier extensions.conf
69 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Une fois que les comptes et numéros sont créés ; on recharge asterisk par la commande :
asterisk -rvvvvvvvvvv
Puis dans l’interface d’asterisk on tape : reload
On installe net-tools pour nous permettre de taper la commande netstat pour voir si asterisk a
bien démarré et que son port (5060) est ouvert
On fait netstat -anp| grep -w 5060 pour voir si le port est ouvert
70 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On peut utiliser des téléphones sip matériels ou logiciels pour tester microsip ou blink
On télécharge microsip
Installation de microsip
71 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On fait suivant jusqu’à la fin de l’installation
On lance microsip
72 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On va paramétrer le téléphone pour qu’il se connecte en cliquant sur le Flechet bas à droit après
contacts en cliquant sur ajouter un compte
73 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Après avoir cliqué sur sauvegarder on obtient comme résultat :
Installation de blink
Pour avoir les dépôts on va sur le lien
⚡ AG Proiects Dépôts Debian (sipthor.net)
Pour nous permettre d’installer la clé de signature du logiciel AG Projects on copie :
sudo curl -o /etc/apt/trusted.gpg.d/agp-debian-key.gpg http://download.ag-projects.com/agp-
debian-key.gpg
74 fait par OUTMAN DJIDDA MOUSSA OUTMAN
et on colle sur le terminal
On copie le fichier adéquat a notre version de linux
On édite le fichier
Et on colle à la fin du fichier
deb http://ag-projects.com/ubuntu bionic main
deb-src http://ag-projects.com/ubuntu bionic main
75 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On fait apt update pour qu’il prend en compte la modification afin de nous permettre
l’installation de blink
Après on exécute la commande :
76 fait par OUTMAN DJIDDA MOUSSA OUTMAN
apt install blink
Maintenant on peut lancer blink en graphique ou en ligne de commande. Dans notre cas on le
lance en graphique. Après avoir lancé blink, on clique sur l’onglet blink, en cliquant sur
préférences et en cliquant sur +(ajouter) on obtient la fenêtre ajout de compte qui nous
permettra d’ajouter un compte :
Après avoir fait entrée on obtient :
77 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On constate qu’à la fin c’est enregistré avec l’adresse ip 192.168.81.130 et que le port est 5060
On relance asterisk -rvvvvvv et on saisit sip show users pour voir les utilisateurs
Pour voir les gens qui sont connectés on fait sip show peers
78 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Et le résultat :
Maintenant du microSIP on appelle blink c’est-à-dire l’utilisateur qui a pour compte 2000 appel
2001
79 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Activation du serveur web asterisk et de l’API ARI. On édite le fichier /etc/aserisk/http.conf
Dans général on décommente enabled=yes, bindaddr on le met a 0.0.0.0 pour qu’il écoute sur
tous les adresses et bindport=8088
Dans le fichier /etc/asterisk/ari.conf
80 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Là on a créé un compte pour pouvoir consommer l’API
On redémarre le serveur service asterisk restart
Pour mettre en contact les utilisateurs pour pouvoir consommer l’API on tape la commande :
81 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Le téléphone 2000 sonne et lorsqu’on décroche le téléphone 2001 sonne à son tour et quand
2001 décroche, les deux utilisateurs entrent en communication
Résultat : on verra qu’ils sont mis en communication
Ecriture d’un programme en python de mise en communication de 2000 avec 2001
On crée un dossier tpf
NB : lien d’un site de conversion de curl dans un langage tel que python php nodejs, java etc.
https://curl.trillworks.com
82 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On édite le fichier mis.py et on colle le code généré
On installe le module requests
On exécute le programme
83 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Résultat : le programme python arrive à mettre en contact les utilisateurs
Mise en communication en passant par un formulaire
Pour avoir l’outil de connexion et de transfert de documents on doit installer le paquet openssh-
server
84 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On va sur la machine Windows on télécharge winSCP en allant sur le lien :
WinSCP :: Site officiel :: Télécharger
Ceci nous permet d’avoir un client qui nous permettra de faire le transfert
Après l’installation et lancement on va se trouver sur cette fenêtre, à gauche c’est Windows et à
droite c’est linux. On prend le document de Windows on le glisse sur le bureau de linux
85 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Résultat : on a notre document sur le bureau linux
On installe le paquet python3 python3-pip en tapant la commande :
apt install python3 python3-pip
86 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Pour avoir le serveur web apache on tape la commande :
On active le module cgid et on redémarre le serveur apache en exécutant la commande :
systemctl restart apache2
87 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Après on installe La Common Gateway Interface (littéralement « Interface de passerelle
commune ») pour nous permettre d’exécuter de code python depuis apache.
cd /usr/lib/cgi-bin
On édite le fichier mis.py
On va dans var pour aller créer un site web avec un formulaire html
88 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On crée un dossier tp
On édite le fichier index.html
On ouvre un navigateur et on saisit l’url :
89 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On valide et le résultat :
Les utilisateurs sont mis en communication. Quand on appui sur répondre on verra que le
second téléphone se met à son tour à sonner
90 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Et quand on accepte le résultat :
91 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Amélioration de l’interface en intégrant le css
On édite le fichier indexcss.html
92 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On édite le fichier style.css
93 fait par OUTMAN DJIDDA MOUSSA OUTMAN
Résultat visuel
Utilisation de feuille de style css
Algo :
On crée (2) labels appelant et appelé.
On crée 2 zones de texte Entry nommées appelant et appelé.
On crée un bouton On place les 5 widgets.
On crée une fonction call Quand on clique sur le bouton, on appelle (call) avec les paramètres
appelant et appel
On édite le fichier misetkinter.py
94 fait par OUTMAN DJIDDA MOUSSA OUTMAN
On lance l’application en tapant python3 misetkinter.py
Résultat : interface
95 fait par OUTMAN DJIDDA MOUSSA OUTMAN