Projet Informatique
Mickael Lecoq
2A - 2018/2019
Il y a une SEMAINE ...
Données structurées
Formats CSV, JSON, XML ...
CSV (Comma-Separated Values)
- Représentation Tabulaire
- Format simple (se lit par ligne et un séparateur pour les données)
- Limité pour les structures arborescentes, les sous listes
XML (eXtensible Markup Language)
- Représentation arborescente
- Utilisation de balises
- Utilisé pour de nombres formats (SVG, RSS, OpenDocument ...)
JSON (JavaScript Object Notation)
- Représentation arborescente
- Plus léger que le XML
- Reconnu nativement par JavaScript (donc par le navigateur)
Structure Arborescente
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user data-id="101">
<nom>Zorro</nom>
<metier>Danseur</metier>
</user>
<user data-id="102">
<nom>Hulk</nom>
<metier>Footballeur</metier>
</user>
<user data-id="103">
<nom>Zidane</nom>
<metier>Star</metier>
</user>
<user data-id="104">
<nom>Beans</nom>
<metier>Epicier</metier>
</user>
<user data-id="105">
<nom>Batman</nom>
<metier>Veterinaire</metier>
</user>
<user data-id="106">
<nom>Spiderman</nom>
<metier>Veterinaire</metier>
</user>
</users>
from lxml import etree
tree = etree.parse("data.xml")
for user in tree.xpath("/users/user/nom"):
print(user.text)
Zorro
Hulk
Zidane
Beans
Batman
Spiderman
Encoding
Encoding
A S C I I
41 53 43 49 49
Format pour les accents
- ISO 8859 (langues latines)
- ISO 2022 (langues asiatiques)
- UTF-16
- UTF-8
- Windows 1252 - CP1252
Windows -> Windows 1252
Mac OS, Linux -> UTF-8
Utilisation du terminal
Sous Windows :
- cd <nom du repertoire>
- dir
- <nom du disque>: (pour aller sur le disque, exemple d:)
~/ python <myscript>
Démo
Communication Client / Serveur
PAGES WEB
FICHIERS (PHOTOS ..)
BDD
CLIENTS
SERVEURS
RESEAU
Le client
-
effectue une demande de service auprès du serveur
(requête)
-
initie le contact (parle en premier), ouvre la session
Le serveur
-
est la partie de l'application qui offre un service
-
est à l'écoute des requêtes clientes
-
répond au service demandé par le client (réponse)
Requête
Réponse
Le serveur peut répondre à plusieurs clients
Comment communiquent-ils
Couche Physique
Couche Logique
@IP : 192.168.1.14
@IP : 192.168.1.7
@IP : 192.168.1.12
@IP : 192.168.1.4
Adresses IP (Internet Protocol)
Couche Logique
@IP : 192.168.1.14:80
@IP : 192.168.1.7:XX
@IP : 192.168.1.12:XX
@IP : 192.168.1.4:XX
PORT = Canal de communication / Identification du programme a exécuté
Couche Logique
Conventions
Protocole | Numéro de Port |
---|---|
HTTP | 80 |
HTTPS | 443 |
FTP (File Transfert Protocol) | 21 |
SSH (Connection à une machine à distance) | 22 |
SMTP (Envoi d'email) | 25, 465, 587 |
POP3 (Réception d'email) | 110, 995 |
Couche Logique
Exemple Base de Données - TP1
import psycopg2
connection =
psycopg2.connect(host="sgbd-eleves.domensai.ecole",
port="5432",
database="MY_ID",
user="MY_ID",
password="MY_ID")
Couche Logique
Serveur DNS (Domain Naming Server)
google.fr ?
facebook.com ?
amazon.fr ?
google.fr
Serveur DNS
Qu'elle est l'IP ?
IP: 216.58.213.131
facebook.com
IP: 157.240.21.35
amazon.fr
IP: 54.239.33.91
Protocole HTTP (Hypertext Transfer Protocol)
https://www.monsite.io/mapage
GET /mapage Host: www.monsite.io
Page HTML
<html>
<head>
</head>
<body>
</body>
</html>
Requête
Réponse
Requête GET
https://www.monsite.io/mapage? param1=value1¶m2=value2
GET /mapage?param1=value1¶m2=value2 Host: www.monsite.io
Page HTML
<html>
<head>
</head>
<body>
</body>
</html>
Requête
Réponse
QUERY PARAMETERS
POST /mapage2 Host: www.monsite.io
nom=Lecoq&prenom=Mickael
Page HTML
<html>
<head>
</head>
<body>
</body>
</html>
Requête
Réponse
Requête POST
Démo !!!
Gestion des erreurs
Http Status
Plusieurs plages
2xx - Succès, par ex :
- 200 OK
3xx - Redirection, par ex :
- 301 déplacé de façon permanente
- 302 déplacé temporairement
4xx - Erreur côté client, par ex :
- 404 non trouvé
- 403 authentification nécessaire
- 429 trop de requête
5xx - Erreur côté serveur, par ex :
- 500 erreur interne
API (Application Programming Interface) - Web Service
Service WEB
Echanges d'informations
Exemple avec une boutique en ligne
Contient :
- les identifiants de vos clients
- votre catalogue
- les commandes
Création des comptes
Affichage du catalogue
...
Service WEB
Echanges d'informations
Exemple avec une boutique en ligne
Comment ajouter un système de paiement ?
Service WEB
Echanges d'informations
Exemple avec une boutique en ligne
Service de paiement
Votre application
Requête : enregistrer le paiement
Réponse: Paiement OK
Service WEB
API REST (REpresentational State Transfer)
- Se base sur le protocole HTTP :
- GET : récupérer une information
- POST : créer
- PUT : mettre à jour
- DELETE : supprimer
- Renvoie généralement du JSON
Service WEB
Exemple PYTHON - Module Requests
import requests
response = requests.get(
'MON_URL')
# si le statut est 200
if response.status_code == requests.codes.ok :
print(response.json())
else:
print('une erreur est survenue')
Service WEB
API REST (REpresentational State Transfer)
Démo !!!
Des questions ?
ENSAI - Projet Info - Cours 3
By Mickael Lecoq
ENSAI - Projet Info - Cours 3
- 1,328