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.