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
Les formations de sérialisation comprennent JSONYAML, XML
Dans cet article, nous parlons de YAML, et à la fin de l'article, vous serez en mesure de travailler avec YAML et d'avoir une introduction claire à YAML
Qu'est-ce que YAML et quel est son intérêt pour moi ?
YAML est un format de sérialisation de données qui signifie YAML n'est pas un langage de balisage (Markup language)
Le principal avantage de l'utilisation de YAML est la lisibilité et l'é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, PythonRuby, Java, etc.
YAML ne prend en charge que les espaces, et il est sensible à la casse et à l'espace. 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 du mapping est key : value. (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 : FALSE
GPA : 3.61
ISSUES : NULL
NAME : "BIGYAN"
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 pour "Questions". La valeur de "Nom"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, je m'appelle Ryan
, je viens 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é
À propos de :
|
Il s'agit d'une chaîne de plusieurs lignes
Elle 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 :
Pommes
Bananes
Goyaves
L'imbrication est nécessaire pour passer d'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
Sujets :
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
Moderne
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
<span class="hljs-attr">détails :</span> <span class="hljs-meta">&détails</span>
<span class="hljs-attr">nom :</span> <span class="hljs-string">"John"</span>
age : 18
profession : ingénieur
<< :
*
détails
ce qui est équivalent à
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
name : "john"
age:18
gender : male
Créez un autre fichier nommé feed.yaml
avec le contenu suivant
sports :
football
basketball
cricket
baseball
—
pays :
Brésil
Lituanie
Australie
USA
Commençons par lire le fichier details.yaml
import yaml
with 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 en Python au format dictionnaire
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']},
{'pays' : ['Jamaïque', 'Angleterre', 'Népal', 'Pays-Bas', 'Afrique du Sud', 'Bolivie', 'Portugal']}]
with open(r'E:\data.yaml', 'w') as file : #créer un nouveau fichier yaml
data = yaml.dump(dict_file, file)
Implémentation de YAML dans Node.js
Node.j s 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
name:John
age:18
Hobbies :
Hobby1:Football
Hobby2:BasketBall
Hobby3:Hockey
Job :
-Système
administrator
-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 utilisons ensuite le module js-yaml
dans notre fichier
const yaml = require('js-yaml') ; //initialise 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 les cadres de la programmation et les applications modernes 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 de 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.