Vous êtes sur la page 1sur 30

Chapitre 3: Les API

Module : Programmation système et réseaux

AU: 2022-2023
Présentation de l'Automatisation
Définition de l’automatisation

• C’est le terme qui décrit les applications technologiques ou l’apport humain est minimisé
• L’automatisation du réseau est le processus d’automatisation de la configuration, de la
gestion, des tests, du déploiement et du fonctionnement des périphériques physiques et
virtuels au sein d’un réseau.
➢ Les tâches et les fonctions quotidiennes du réseau étant automatisées et les processus
répétitifs étant contrôlés et gérés automatiquement
Présentation de l'Automatisation
l'Augmentation de l'Automatisation

• Une productivité supérieure, car les machines peuvent fonctionner 24 heures sur 24, sans
aucune pause.
• Les Machines fournissent un produit plus uniforme.
• L'automatisation permet la collection d'immenses volumes de données qui peuvent être
analysées rapidement pour fournir des informations qui aident à guider un événement ou un
processus.
• Les robots sont utilisés dans des conditions dangereuses comme l'exploitation minière, la
lutte contre les incendies et le nettoyage des accidents industriels. Cela réduit le risque pour
l'homme.
• Dans certaines circonstances, les appareils intelligents peuvent modifier leur comportement
pour réduire la consommation d'énergie, poser un diagnostic médical et améliorer la sécurité
de conduite automobile
Présentation de l'Automatisation
Appareils Intelligents

• De nombreux appareils intègrent une technologie intelligente pour aider à régir leur
comportement. Cela peut être également simple qu'un appareil intelligent réduisant sa
consommation d'énergie pendant les périodes de forte demande ou également
complexe qu'une voiture autonome.
• Chaque fois qu'un appareil prend une action basée sur l'information extérieure, cet
appareil est appelé appareil intelligent.
➔ De nombreux appareils avec lesquels nous agissons sont aujourd'hui associés au
terme «intelligent». Cela indique que l'appareil peut modifier son comportement selon leur
environnement.
• Pour que les appareils «réfléchissent», ils doivent être programmés à l'aide d'outils
d'automatisation de réseau.
Formats de données
Le concept des formats de données
• Les formats de données sont simplement un moyen de stocker et d'échanger des données
dans un format structuré.
➔ HTML est un langage de balisage standard pour décrire la structure des pages Web.

• JSON: Notation d'objet JavaScript


• XML: Extensible Markup Language
• YAML: Yet Another Markup Language

• Le format de données sélectionné dépend du format utilisé par l'application, l'outil ou le


script que vous utilisez. De nombreux systèmes pourront prendre en charge plusieurs
formats de données, ce qui permet à l'utilisateur de choisir son format préféré.
Formats de Données
Règles de format des données
Les formats de données ont des règles et une structure similaires à celles que nous avons avec
la programmation et les langages écrits. Chaque format de données aura des caractéristiques
spécifiques :
• Syntaxe, qui inclut les types de parenthèses utilisés, tels que \ [ \], ( ), { }, l'utilisation
d'espaces blancs ou l'indentation, les guillemets, les virgules, etc.
• Comment les objets sont représentés, comme les caractères, les chaînes, les listes et les
tableaux.

• Comment les paires clé / valeur sont représentées ?


➔ La clé se trouve généralement sur le côté gauche et identifie ou décrit les données. La valeur
à droite correspond aux données elles-mêmes et peut être un caractère, une chaîne, un
nombre, une liste ou un autre type de données.
Formats de Données
Différentes formats de données
message: succes
{
timestamp: 1560789260
"message": "success",
iss_position:
"timestamp": 1560789260,
latitude: '25.9990’
"iss_position": {
longitude: '-132.6992'
"latitude": "25.9990",
"longitude": "-132.6992"
Format YAML
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<root>
Format JSON
<message>success</message>
<timestamp>1560789260</timestamp>
<iss_position>
<latitude>25.9990</latitude>
<longitude>-132.6992</longitude>
</iss_position>
</root>
Format XML
Formats de données
JSON Formats de données

• JSON est un format de données lisible par l'humain utilisé par les applications pour
stocker, transférer et lire des données.

• JSON est un format très populaire utilisé par les services Web et les API pour fournir
des données publiques. Ceci est pour qu'il est facile à analyser et peut être utilisé avec
la plupart des langages de programmation modernes, y compris Python.
Formats de données
JSON Formats de données
GigabitEthernet0/0/0 is up, line protocol is up (connected)
Description: WAN 6.0.2/24
internet adress is 172.1
{
"ietf-interfaces:interface": {
"name": "GigabitEthernet0/0/0",
"description": "WAN",
Notez que chaque objet (chaque paire clé / "activated": yes,
valeur) est une donnée différente sur l'interface, "ietf-ip:ipv4": {
y compris son nom, une description et si "adress": [
l'interface est activée. {
"ip": "172.16.0.2",
"netmask":
"255.255.255.0"
}
]
}
}
}
Formats de Données
Règles de Syntaxe JSON
Ce sont quelques-unes des caractéristiques de JSON:
• Il utilise une structure hiérarchique et contient des valeurs imbriquées.
• Il utilise des accolades { } pour contenir des objets et des crochets [ ] contiennent des
tableaux.
• Ses données sont écrites sous forme de paires clé / valeur.

Dans JSON, les données appelées objet sont une ou plusieurs paires clé / valeur entre
accolades { }. La syntaxe d'un objet JSON comprend:
• Les clés doivent être des chaînes entre guillemets " ".
• Les valeurs doivent être un type de données JSON valide (chaîne, nombre, tableau,
booléen, nul ou autre objet).
• Les clés et les valeurs sont séparées par deux points.
• Plusieurs paires clé / valeur dans un objet sont séparées par des virgules.
• L'espace blanc n'est pas significatif.
Formats de Données
Règles de Syntaxe JSON (suite)
Parfois, une clé peut contenir plusieurs valeurs. C'est ce qu'on appelle un tableau. Un tableau
en JSON est une liste ordonnée de valeurs. Les caractéristiques des tableaux dans JSON
incluent:
• La clé suivie de deux-points et d'une liste de valeurs entre crochets [ ]
• Un tableau est une liste ordonnée de valeurs.
• Le tableau peut contenir plusieurs types de valeurs, y compris une chaîne, un nombre, un
booléen, un objet ou un autre tableau à l'intérieur du tableau.
• Chaque valeur du tableau est séparée par une virgule.
Formats de Données
Règles de Syntaxe JSON (suite)

Par exemple, une liste d'adresses IPv4 {


peut ressembler au résultat suivant. Le "adresses": [
clé est “adresses” . Chaque élément de {
la liste est un objet distinct, séparé par "ip": "172.16.0.2",
"netmask": "255.255.255.0"
des accolades { }. Les objets sont deux
},
paires clé / valeur: une adresse IPv4
{
(«ip») et un masque de sous-réseau "ip": "172.16.0.3",
(«netmask») séparés par une virgule. Le "netmask": "255.255.255.0"
tableau d'objets dans la liste est aussi },
séparé par une virgule après l'accolade {
fermante pour chaque objet "ip": "172.16.0.4",
"netmask": "255.255.255.0"
}
]
}
Formats de données
Formats de données YAML

YAML est un autre type de format de données lisibles par l'homme utilisé par les applications
pour stocker, transférer et lire des données. Certaines des caractéristiques de YAML
comprennent:
• C'est comme JSON et est considéré comme un sur-ensemble de JSON.
• Il a un format minimaliste qui facilite la lecture et l'écriture.
• Il utilise l'indentation pour définir sa structure, sans utiliser de crochets ou de virgules.
Formats de données
Formats de données YAML (suite)
{ • Le résultat IOS en JSON est à gauche. Les
"ietf-interfaces:interface": { mêmes données au format YAML sont ci-dessous.
« Name": "GigabitEthernet2", C'est plus facile à lire.
"description": "WAN”,
"activated": yes, • Similaire à JSON, un objet YAML est une ou
"ietf-ip:ipv4": { plusieurs paires valeur / clé. Les paires valeur / clé
"adress": [ sont séparées par deux points sans utiliser des
{
"ip": "172.16.0.2",
guillemets. En YAML, un trait d'union est utilisé
"netmask": "255.255.255.0" pour séparer chaque élément d'une liste.
},
{ ietf-interfaces:interface:
"ip": "172.16.0.3", Name: GigabitEthernet2
"netmask": "255.255.255.0" description: Réseau étendu (WAN)
}, activated :yes
{ ietf-ip:ipv4:
"ip": "172.16.0.4", adresse:
"netmask": "255.255.255.0" - ip: 172.16.0.2
} netmask: 255.255.255.0
] - ip: 172.16.0.3
} netmask: 255.255.255.0
} - ip: 172.16.0.4
} netmask: 255.255.255.0
Formats de données
Formats de données XML

XML est un autre type de format de données lisibles par l'homme utilisé pour stocker,
transférer et lire des données par des applications. Certaines des caractéristiques de XML
incluent:
• C'est comme HTML, qui est le langage de balisage normalisé pour la création de
pages Web et d'applications Web.
• Il est auto-descriptif. Il enferme les données dans un ensemble
d'étiquette: <tag>data</tag>
• Contrairement à HTML, XML n'utilise ni balises ni structure de document prédéfinies.

Les objets XML sont une ou plusieurs paires clé / valeur, avec l'étiquette de début utilisée
comme nom de la clé: <key>value</key>
Formats de données
Formats de données XML (suite)
Le résultat suivant indique que les
mêmes données pour <?xml version="1.0" encoding="UTF-8" ?>
<ietf-interfaces:interface>
GigabitEthernet2 sont formatées tel <name>GigabitEthernet2</name>
qu'un structure de données XML. <description>WAN</description>
Remarquez comment les valeurs sont <Activate>juste</Activate>
<ietf-ip:ipv4>
incluses dans les balises d'objet. Dans <adress>
cet exemple, chaque paire clé / valeur <ip>172.16.0.2</ip>
se trouve sur une ligne distincte et <netmask>255.255.255.0</netmask>
</adresse>
certaines lignes sont en retrait. Ceci <adresse>
n'est pas obligatoire mais est effectué <ip>172.16.0.3</ip>
pour la lisibilité. La liste utilise des <netmask>255.255.255.0</netmask>
</adress>
exemples répétées <adress>
de <tag></tag> pour chaque élément <ip>172.16.0.4</ip>
de la liste. Les éléments de ces <netmask>255.255.255.0</netmask>
</adresse>
exemples répétés représentent une ou </ietf-ip:ipv4>
plusieurs paires clé / valeur. </ietf-interfaces:interface>
Exercice
donner la représentation en format json et xml a partir de l’exemple
suivant (en yaml)
Correction :

XML Json
Les API
Les concepts d'API
• Une API est un logiciel qui permet à d'autres applications d'accéder à ses données ou
services.
➔ Il s'agit d'un ensemble de règles décrivant comment une application peut interagir avec
une autre et les instructions permettant à l'interaction de se produire.
➔ L'utilisateur envoie une requête d'API à un serveur demandant des informations
spécifiques et reçoit une réponse d'API en retour du serveur avec les informations
demandées.
Les API
Un Exemple API
Pour bien comprendre comment les API peuvent être utilisées pour fournir des données et
des services, nous examinerons deux options pour réserver les compagnies aériennes.

La première option utilise le site Web d’une


compagnie aérienne spécifique. En utilisant le site
Web de la compagnie aérienne, l’utilisateur entre les
informations pour effectuer une demande de
réservation. Le site Web interagit directement avec
la propre base de données de la compagnie
aérienne et fournit à l’utilisateur des informations
correspondant à sa demande.
Les API
Un Exemple API (suite)
Un site de voyage peut accéder au mêmes informations, pas de compagnie aérienne
spécifique mais d'une variété de compagnies aériennes.
Dans ce cas, l'utilisateur entre dans des informations de réservation similaires. Le site Web
du service de voyage interagit avec les différentes bases de données des compagnies
aériennes à l'aide des API fournies par chaque compagnie aérienne.
Le service de voyage utilise chaque API de
compagnie aérienne pour demander des
informations à cette compagnie aérienne
spécifique, puis il affiche les informations de
toutes les compagnies aériennes sur sa page
Web.
L'API agit comme une sorte de messager
entre l'application de requête et l'application
sur le serveur qui fournit les données ou le
service. Le message de l'application de
requête au serveur sur lequel résident les
données est appelé appel API.
Les API
API ouverts,internes et partenaires

Une considération importante lors du développement d'une API est la distinction entre les API
ouvertes, internes et partenaires:
• API ouvertes ou API publiques - Ces API sont disponibles au public et peuvent être
utilisées sans aucune restriction. Étant donné que ces API sont publiques, de nombreux
fournisseurs d'API exigent que l'utilisateur obtienne une clé ou un jeton gratuit avant
d'utiliser l'API. Cela permet de contrôler le nombre de demandes d'API qu'ils reçoivent et
traitent.
• API internes ou privées -Ce sont des API qui sont utilisées par une organisation ou une
entreprise pour accéder aux données et services pour un usage interne uniquement. Un
exemple d'API interne permet aux vendeurs autorisés d'accéder aux données de vente
internes sur leurs périphériques mobiles.
• API partenaires - Ce sont des API utilisées entre une entreprise et ses partenaires
commerciaux ou contractures pour faciliter les échanges entre eux. Le partenaire
commercial doit disposer d'une licence ou d'une autre forme d'autorisation pour utiliser l'API.
Un service de voyage utilisant l'API d'une compagnie aérienne est un exemple d'API
partenaire.
Les API
Types d'API de service Web
Un service Web est un service disponible sur internet via le World Wide Web. Il existe quatre
types d'API de service Web:
• Protocole d'accès aux objets simples (SOAP)
• Transfert d'état représentatif (REST)
• Langage de balisage extensible-Appel de procédure à distance (XML-RPC)
• JavaScript notation d'objet-Appel de procédure à distance(JSON-RPC)

Caractéristique SOAP REST XML-RPC JSON-RPC


Format de JSON, XML, YAML et
XML XML JSON
données autres
Première
1998 2000 1998 2005
publication
Formatage flexible et
Bien établi,
Forces Bien établi le plus largement Simplicité
simplicité
utilisé
Les API
API REST et RESTful
Les navigateurs Web utilisent HTTP ou HTTPS pour demander (GET) une page Web. S'ils sont
correctement demandés ,les serveurs Web répondent aux demandes GET avec une page Web codée
HTML.

En termes simples, une API REST est une API qui fonctionne au-dessus du protocole HTTP. Il définit
un ensemble de fonctions que les développeurs peuvent utiliser pour effectuer des requêtes et recevoir
des réponses via le protocole HTTP tel que GET et POST.
• La conformité aux contraintes de l'architecture REST est généralement appelée «RESTful». Une
API peut être considérée comme «RESTful» si elle possède les fonctionnalités suivantes:
• Client / serveur - Le client gère l'extrémité avant et le serveur gère l'extrémité arrière. L'un ou
l'autre peut être remplacé indépendamment de l'autre.
• Apatride - Aucune donnée client n'est stockée sur le serveur entre les requêtes. L'état de session
est stocké sur le client.
• Cacheable - Les clients peuvent mettre en cache les réponses pour améliorer les performances,
afin de limiter les appels au serveur et éviter de le surcharger : le client peut sauvegarder
certaines information en cache pour les réutiliser
Les API
Mise en œuvre RESTful
Un service Web RESTful est implémenté à l'aide de HTTP. Il s'agit d'une collection de ressources avec
quatre aspects définis:
• L'identificateur de ressource uniforme de base (URI) pour le service Web, tel que:
http://example.com/resources.
• Format de données pris en charge par le service Web. Il s'agit souvent de JSON, YAML ou
XML, mais il peut s'agir de tout autre format de données qui constitue une norme hypertexte
valide.
• Ensemble d'opérations prises en charge par le service Web à l'aide de méthodes HTTP.
• L'API doit être basée sur l'hypertexte.

Méthode HTTP Opération RESTful

POST Créer

GET Lire

PUT/PATCH Mettre à jour

SUPPRIMER Supprimer
Les API
URI, URN, et URL

Les ressources Web et les services Web tels que les API RESTful sont identifiés à l'aide d'un
URI. Un URI est une chaîne de caractères qui identifie une ressource de réseau spécifique. Un
URI a deux spécialisations:
• Nom de ressource uniforme (URN) - identifie uniquement l'espace de noms de la
ressource (page Web, document, image, etc.) sans référence au protocole.
• Localisateur de ressources uniforme (URL) - définit l'emplacement réseau d'une
ressource spécifique. Les URL HTTP ou HTTPS sont généralement utilisées avec les
navigateurs Web. Des protocoles tels que FTP, SFTP, SSH et autres peuvent utiliser une
URL.
Une URL utilisant SFTP peut ressembler à: sftp: //sftp.example.com.
Exemple :Ce sont les parties de l'URI https://www.example.com/author/book.html#page155 :
• Protocole/schéma – HTTPS ou d'autres protocoles tels que FTP, SFTP, mailto et NNTP
• Nom d'hôte - www.example.com
• Chemin et nom de fichier - /author/book.html
• Fragment - #page155
Les API
Anatomie d'une demande RESTful

• Dans un service Web RESTful, une demande adressée à l'URI d'une ressource
provoquera une réponse. La réponse sera une charge utile généralement formatée en
JSON, mais pourrait être HTML, XML ou un autre format. La figure indique l'URI de
l'API directions MapQuest.
• La demande d'API est pour les directions de San Jose, Californie à Monterey,
Californie.
Les API
Anatomie d'une demande RESTful (suite)
Voici les différentes parties de la demande d'API:
• Serveur API - Il s'agit de l'URL du serveur qui répond aux demandes REST. Dans cet exemple, il s'agit du
serveur API MapQuest.
• Ressources - Spécifie l'API qui est demandée Dans cet exemple, il s'agit de l'API directions MapQuest.
• Requête - Spécifie le format de données et les informations que le client demande au service API. Les
requêtes peuvent inclure:
• Format – Il s'agit généralement de JSON mais peut être YAML ou XML. Dans cet exemple, JSON est
demandé.
• Clé - La clé est pour l'autorisation, si nécessaire. MapQuest nécessite une clé pour son API de directions.
Dans l'URI ci-dessus, vous devez remplacer «KEY» par une clé valide pour soumettre une demande valide.
• Paramètres - Les paramètres sont utilisés pour envoyer des informations relatives à la demande. Dans cet
exemple, les paramètres de requête incluent des informations sur les directions dont l'API a besoin pour
qu'elle sache les directions pour retourner: "from = San + Jose, Ca" et "to = Monterey, Ca".
Les API
Anatomie d'une demande RESTful (suite)
De nombreuses API RESTful, y compris les API publiques, nécessitent une clé. La clé est
utilisée pour identifier la source de la demande. Voici quelques raisons pour lesquelles un
fournisseur d'API peut nécessiter une clé:

• Pour authentifier la source pour vous assurer qu'elle est autorisée à utiliser l'API.
• Pour limiter le nombre de personnes utilisant l'API.
• Pour limiter le nombre de demandes par utilisateur.
• Pour mieux capturer et suivre les données demandées par les utilisateurs.
• Pour recueillir des informations sur les personnes utilisant l'API.
Les API
Les Application d'API RESTful
• De nombreux sites Web et applications utilisent des API pour accéder aux informations et fournir
des services à leurs clients.
• Certaines demandes d'API RESTful peuvent être effectuées en tapant l'URI à partir d'un
navigateur Web. Dans cet exemple, il s'agit de l'API directions MapQuest. Une demande d'API
RESTful peut également être effectuée par d'autres moyens.
• Le web site développeur: Les développeurs gèrent souvent des sites Web qui contiennent des
informations sur l'API, des informations sur les paramètres et des exemples d'utilisation. Ces
sites peuvent également permettre à l'utilisateur d'effectuer la demande d'API dans la page Web
du développeur en entrant les paramètres et d'autres informations.
• Postman: Postman est une application pour tester et utiliser les API REST. Il contient tout ce qui
est nécessaire pour construire et envoyer des demandes d'API REST, y compris la saisie des
paramètres de requête et des clés.
• Python: Les API peuvent également être appelées à partir d'un programme Python. Cela permet
une automatisation, une personnalisation et une intégration d'applications possibles de l'API.
• Systèmes D'exploitation Réseau: À l'aide de protocoles tels que NETCONF (NET
CONFiguration) et RESTCONF, les systèmes d'exploitation de réseau commencent à fournir une
méthode alternative pour la configuration, la surveillance et la gestion.

Vous aimerez peut-être aussi