Si vous êtes un développeur qui écrit des API, vous avez probablement rencontré YAML, même si votre principal outil de sérialisation est JSON.
YAML possède sa propre syntaxe conviviale, et c’est un langage pratique à ajouter à votre arsenal de développement.
Découvrons les bases de YAML.
Sérialisation des données
Lorsque vous souhaitez envoyer une structure de données ou un objet sur un réseau informatique, par exemple Internet, vous devez le transformer dans un format spécial pour pouvoir le lire et le stocker. Ce processus est connu sous le nom de sérialisation et revêt une importance considérable sur le web. Un exemple d’utilisation courante de la sérialisation est la lecture de données à partir de bases de données et leur transfert sur le web.
Certaines formations de sérialisation incluent JSON, YAML, XML.
Dans cet article, je vais parler de YAML, et à la fin de l’article, vous serez capable de travailler avec YAML et d’avoir une idée claire de YAML.
Qu’est-ce que YAML ?
YAML est un format de sérialisation de données qui signifie YAML ain’t Markup language (langage de balisage).
Le principal avantage de l’utilisation de YAML est sa lisibilité et sa facilité d’écriture. Si vous avez un fichier de configuration qui doit être plus facile à lire, il est préférable d’utiliser YAML. YAML n’est pas une substitution complète de JSON, car JSON et XML ont aussi leur place ; néanmoins, il est utile d’apprendre YAML.
Un autre avantage de YAML est sa prise en charge de divers types de données tels que les cas, les tableaux, les dictionnaires, les listes et les scalaires. Il supporte bien les langages les plus populaires comme JavaScript, Python, Ruby, Java, etc.
YAML ne prend en charge que les espaces, et il est sensible à la casse et aux espaces. Les tabulations ne sont pas acceptées universellement. Un fichier YAML porte l’extension .yaml
.
Syntaxe de base du YAML
Chaque fichier YAML commence par ---
, qui indique le début d’un fichier YAML.
Lors de la création d’une API, nous nous intéressons à une fonctionnalité fournie par YAML, connue sous le nom de mapping.
Les exemples suivants illustrent le mappage en YAML.
---
nom : James
garçon : oui
GPA : 3.41
La syntaxe de correspondance est clé : valeur. (Notez l’espace, il est très important dans YAML, contrairement à JSON ou XML.
YAML prend également en charge des types de données tels que les caractères, les chaînes, les entiers, les valeurs flottantes et les collections telles que les tableaux et les listes, qui sont construits à partir de types de données de base.
Types de données en YAML
Voyons l’exemple de YAML ci-dessous :
---
MALE : FAUX
MOYENNE GÉNÉRALE : 3,61
QUESTIONS : NULLE
NOM : "HARRY"
AGE : 16
Le premier type de données est un booléen, qui peut prendre deux valeurs : true (vrai) ou false (faux). La valeur de GPA est en virgule flottante. YAML prend également en charge le type de données null, comme c’est le cas pour “Issues”. La valeur de “Name” est une chaîne de caractères qui doit être citée entre guillemets doubles ou simples. YAML prend également en charge les chaînes de caractères multilignes et les chaînes de caractères multilignes en tant que chaînes uniques pour des raisons de lisibilité.
Chaînes multilignes et à ligne unique
---
A propos de : >
Bonjour, c'est Ryan
De l'Alabama et j'aime
Jouer au football.
Le symbole <i>></i>
vous permet d’écrire une chaîne d’une seule ligne sur plusieurs lignes. La phrase est en fait une description d’une seule ligne bien que nous ayons plusieurs lignes.
Il est également possible d’avoir des chaînes de plusieurs lignes en utilisant le symbole |
comme autorisé :
A propos de : |
Il s'agit d'une chaîne de plusieurs lignes
Et sera imprimée par ligne.
Liste
Les listes sont très importantes en YAML.
Un exemple de liste est donné ci-dessous.
---
- pomme
- banane
- mangue
La correspondance entre les scalaires et les listes est illustrée ci-dessous, ce qui est très important pour la plupart des fichiers de configuration.
---
Fruits :
Pomme
Banane
Goyave
L’imbrication est nécessaire pour faire correspondre un scalaire à une liste. Nous pouvons également avoir plusieurs listes imbriquées, comme le montre l’exemple ci-dessous.
Automobiles :
Voiture :
Hyundai
Volkswagen
Ford
Ici, les voitures sont imbriquées dans les automobiles, et Hyundai est imbriquée dans les voitures. Il s’agit d’un exemple d’imbrication multiple. Nous pouvons avoir des imbrications multiples autant que nous le souhaitons.
Sujet :
Ingénierie :
Ingénierie mécanique :
Conception et fabrication
Automobile
Contrôle et conception
Génie civil :
Ingénierie structurelle
Hydroélectricité
Arts :
Médiéval
Modernes
Peinture
YAML fournit également les symboles &
et *
en tant qu’ancres et références à l’ancre pour éviter la duplication. Ils sont essentiels dans les fichiers de configuration de frameworks tels que Ruby on Rails pour réduire la taille du fichier YAML.
Voyez l’exemple ci-dessous.
details : &details
name : "John"
âge : 18
profession : ingénieur
<< : * détails
ce qui équivaut à :
profession : ingénieur
nom : "John"
âge : 18
YAML en Python
Python supporte YAML, y compris certains modules comme ruamel et pyyaml. Commencez par installer pyyaml
pip install pyyaml
Pour le tutoriel, créez un fichier avec un nom details.yaml
nom : "john"
age:18
sexe : homme
Créez un autre fichier nommé feed.yaml
avec le contenu suivant :
sports :
football
basket-ball
cricket
baseball
---
pays :
Brésil
Lituanie
Australie
ÉTATS-UNIS
Commençons par lire le fichier details.yaml
import yaml
avec open('details.yaml') as f :
data = yaml.load(f, Loader=yaml.FullLoader)
print(data)
Après avoir exécuté le fichier details.py, nous obtenons la sortie suivante
$ python details.py
{'name' : "john", 'age' : 18, 'gender' : male}
import yaml
with open(r'feed.yaml') as file :
# Le paramètre FullLoader gère la conversion des valeurs scalaires YAML
# scalaires en format dictionnaire Python
fruits_list = yaml.load(file, Loader=yaml.FullLoader)
print(fruits_list)
Écrire YAML dans des fichiers en Python
import yaml
dict_file = [{'sports' : ['hockey', 'rugby', 'tennis', 'ping pong', 'football', 'badminton']},
{'countries' : ['Jamaica', 'England', 'Nepal', 'Netherlands', 'South Africa', 'Bolivia', 'Portugal']}]
with open(r'E:\data.yaml', 'w') as file : #créer un nouveau fichier yaml
data = yaml.dump(dict_file, file)
Mise en œuvre de YAML dans Node.js
Node.js est un langage de traitement côté serveur, et la sérialisation des données revêt une importance considérable dans le processus de développement.
Pour notre tutoriel, considérons le fichier suivant example.yaml
:
nom:John
age:18
Hobbies :
Hobby1 : Football
Hobby2:BasketBall
Hobby3:Hockey
Emploi :
-Administrateur système
-Programmeur
Nous avons une bibliothèque npm disponible pour Node.js appelée js-yaml. Commençons par installer le module en
npm install js-yaml
Nous utiliserons ensuite le module js-yaml
dans notre fichier.
const yaml = require('js-yaml') ; //initialisation de js-yaml
const fs = require('fs') ; //initialise filestream
try {
const result = yaml.load(fs.readFileSync('example.yml', 'utf8')) ;
console.log(result) ;
} catch (e) {
console.log(e) ; //catch exception
}
Conclusion
Dans la programmation moderne, les cadres et les applications où les données sont stockées ou distribuées, YAML devient de plus en plus courant dans les fichiers de configuration. YAML vise un grand nombre des mêmes applications de communication que le langage de balisage extensible (XML), mais sa syntaxe minimale est délibérément différente de celle du XML.
Les fichiers YAML peuvent être créés pour des structures de données fixes à l’aide de commandes d’impression qui écrivent à la fois les données et la décoration particulière du YAML. Toutefois, il est préférable d’utiliser un émetteur YAML dédié pour déverser des données hiérarchiques variées ou complexes. De même, avec les expressions régulières, les fichiers YAML de base (par exemple, les paires clé-valeur) sont facilement analysés.