0% found this document useful (0 votes)
4 views

Api Rest

Rapport sur API REST

Uploaded by

israelmette2
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

Api Rest

Rapport sur API REST

Uploaded by

israelmette2
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 95

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

You might also like