Si vous êtes un développeur qui écrit des API, vous avez probablement rencontré YAML même si votre principal outil de sérialisation peut être JSON.
YAML a sa propre syntaxe conviviale, et c'est un langage pratique à ajouter à votre arsenal de développement.
Apprenons les bases de YAML.
Data serialization
Chaque fois que vous souhaitez envoyer une structure de données ou un objet sur des réseaux informatiques, par exemple Internet, vous devez le transformer en un format spécial pour le lire et le stocker. Le processus est généralement connu sous le nom de sérialisation et est d'une importance énorme sur le Web. Un exemple d'utilisation courant de 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, nous parlons de YAML, et à la fin de l'article, vous pourrez vous frayer un chemin à travers YAML et avoir une introduction claire à YAML.
Qu'est-ce que YAML et en quoi cela me profite-t-il?
YAML est un format de sérialisation de données qui signifie YAML n'est pas un langage de balisage.
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 pour les humains, il est préférable d'utiliser YAML. YAML n'est pas une substitution complète de JSON car JSON et XML ont également 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 prend en charge les langages les plus populaires comme JavaScript, Python, Rubis, Java, etc.
YAML ne prend en charge que les espaces, et il est sensible à la casse et à l'espace. Les onglets ne sont pas acceptés universellement. Un fichier YAML a .yaml
extension.
Basic YAML syntax
Chaque YAML commence par ---
qui indique le début d'un fichier YAML.
Date & Heure créer une API, nous sommes intéressés par une fonctionnalité fournie par YAML appelée mapping.
Les exemples suivants montrent l'exemple de mappage dans YAML.
---
name: James
boy: yes
GPA: 3.41
La syntaxe de mappage est clé: valeur. (Notez l'espace, c'est très crucial en YAML, contrairement à JSON ou XML.
YAML prend également en charge les types de données tels que les caractères, les chaînes, les entiers, les valeurs flottantes et les collections telles que les tableaux, les listes construites à partir de types de données de base.
Types de données dans YAML
Voyons l'exemple d'un YAML ci-dessous:
---
MALE: FALSE
GPA: 3.61
ISSUES: NULL
NAME: “BIGYAN”
AGE: 16
Le premier type de données est un booléen, où il peut avoir deux valeurs: true ou false. La valeur de GPA est à virgule flottante. YAML prend également en charge le type de données nul comme nous l'avons fait pour "Problèmes". La valeur de "Nom»Est une chaîne qui doit être entre guillemets doubles ou simples. YAML prend également en charge la chaîne multiligne et la chaîne de plusieurs lignes comme une seule pour la lisibilité.
Chaînes multilignes et sur une seule ligne
---
About: >
Hello this is Ryan
From Alabama and I like to
Play soccer.
Les <i>></i>
symbole 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.
Nous pouvons également avoir plusieurs chaînes de ligne si nous utilisons le |
symbole comme autorisé:
About: |
This is a multiline string
And will be printed line wise.
Liste
Les listes sont très importantes dans YAML.
Un exemple de la liste est donné ci-dessous.
---
- apple
- banana
- mango
Le mappage du scalaire aux listes est illustré ci-dessous, ce qui est très important pour la plupart des fichiers de configuration.
---
Fruits:
Apples
Banana
Guava
L'imbrication est requise pour mapper le scalaire à la liste. Nous pouvons également avoir plusieurs listes imbriquées, comme indiqué dans l'exemple ci-dessous.
Automobiles:
Car:
Hyundai
Volkswagen
Ford
Ici, les voitures sont imbriquées dans les automobiles et Hyundai est imbriquée dans les voitures. Ceci est un exemple d'imbrication multiple. Nous pouvons avoir plusieurs emboîtements autant que nous le voulons.
Subjects:
Engineering:
Mechanical engineering:
Design and manufacture
Automobile
Control and Design
Civil engineering:
Structural engineering
Hydropower
Arts:
Medieval
Modern
Painting
YAML fournit également &
et *
symboles comme ancres et références à l'ancre pour éviter la duplication. Ils sont essentiels dans les fichiers de configuration dans des frameworks comme Ruby on Rails pour réduire la taille du fichier YAML.
Voir l'exemple ci-dessous
<span class="hljs-attr">details:</span> <span class="hljs-meta">&details</span>
<span class="hljs-attr">name:</span> <span class="hljs-string">"John"
</span> age: 18
profession: engineer
<< : * details
ce qui équivaut à:
profession: engineer
name: "John"
age: 18
YAML in Python
Python prend en charge 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
---
countries:
Brazil
Lithuania
Australia
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:
# The FullLoader parameter handles the conversion from YAML
# scalar values to Python the dictionary format
fruits_list = yaml.load(file, Loader=yaml.FullLoader)
print(fruits_list)
Writing YAML to Files in 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: #create a new yaml file
data = yaml.dump(dict_file, file)
YAML implementation in Node.js
Node.js est un langage de traitement côté serveur, et la sérialisation des données est d'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:
-System administrator
-Programmer
Nous avons une bibliothèque npm disponible pour Node.js appelée js-yaml. Commençons par installer le module par
npm install js-yaml
Nous utilisons ensuite le js-yaml
module dans notre fichier.
const yaml = require('js-yaml'); //initialize js-yaml
const fs = require('fs'); //initialize filestream
try {
const result = yaml.load(fs.readFileSync('example.yml', 'utf8'));
console.log(result);
} catch (e) {
console.log(e); //catch exception
}
Conclusion
In programmation moderne frameworks et applications où les données sont stockées ou distribuées, YAML est de plus en plus courant dans les fichiers de configuration. YAML cible un grand nombre des mêmes applications de communication que le langage XML (Extensible Markup Language), mais a une syntaxe minimale qui est délibérément différente 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. Cependant, un émetteur YAML dédié est préférable pour le vidage de données hiérarchiques diverses 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.