• Assurez la sécurité des applications de la bonne manière! Détectez, protégez, surveillez, accélérez et plus encore…
  • 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.

    Sérialisation des données

    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.

    Syntaxe YAML de base

    Chaque YAML commence par --- qui indique le début d'un fichier YAML.

    Quand 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.

    La > 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

    details: &details
        name: "John"
        age: 18
    profession: engineer
    
    << : * details

    ce qui équivaut à:

    profession: engineer
    
    name: "John"
    
    age: 18

    YAML en 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)
    

    É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: #create a new yaml file 
        data = yaml.dump(dict_file, file)
    

    Implémentation YAML dans 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.