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

EMAIL

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&param2=value2

GET /mapage?param1=value1&param2=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 ?

Made with Slides.com