• ¡Obtenga la seguridad de la aplicación de la manera correcta! Detectar, proteger, monitorear, acelerar y más ...
  • Si eres un desarrollador que escribe API, probablemente te hayas encontrado con YAML aunque tu herramienta de serialización principal sea JSON.

    YAML tiene su propia sintaxis amigable y es un lenguaje útil para agregar a su arsenal de desarrollo.

    Aprendamos los conceptos básicos de YAML.

    Serialización de datos

    Siempre que desee enviar alguna estructura de datos o un objeto a través de redes informáticas, digamos Internet, debe convertirlo en un formato especial para leerlo y almacenarlo. El proceso se conoce comúnmente como serialización y es de enorme importancia en la web. Un ejemplo de uso común de serialización es al leer datos de bases de datos y transferirlos a través de la web.

    Algunas formaciones de serialización incluyen JSON, YAML, XML.

    En este artículo, hablamos sobre YAML, y al final del artículo, podrá trabajar en YAML y tener una introducción clara a YAML.

    ¿Qué es YAML y cómo me beneficia?

    YAML es un formato de serialización de datos que significa YAML no es lenguaje de marcado.

    La principal ventaja de usar YAML es la legibilidad y la capacidad de escritura. Si tiene un archivo de configuración que debe ser más fácil de leer para los humanos, es mejor usar YAML. YAML no es una sustitución completa de JSON ya que JSON y XML también tienen su lugar; sin embargo, es útil aprender YAML.

    Otro beneficio de YAML es que admite varios tipos de datos como casos, matrices, diccionarios, listas y escalares. Tiene un buen soporte para los lenguajes más populares como JavaScript, Python, Ruby, Java, etc.

    YAML solo admite espacios, y distingue entre mayúsculas y minúsculas y espacio. Las pestañas no se aceptan universalmente. Un archivo YAML tiene .yaml extensión.

    Sintaxis básica de YAML

    Cada YAML comienza con --- que denota el inicio de un archivo YAML.

    Cuando te creando una API, estamos interesados ​​en una función proporcionada por YAML conocida como mapeo.

    Los siguientes ejemplos muestran el ejemplo de mapeo en YAML.

    ---
    name: James
    boy: yes
    GPA: 3.41

    La sintaxis de mapeo es clave: valor. (Tenga en cuenta el espacio, es muy importante en YAML, a diferencia de JSON o XML.

    YAML también admite tipos de datos como caracteres, cadenas, números enteros, valores flotantes y colecciones como matrices, listas que se construyen a partir de tipos de datos básicos.

    Tipos de datos en YAML

    Veamos el ejemplo de un YAML a continuación:

    ---
    
    MALE: FALSE
    
    GPA: 3.61
    
    ISSUES: NULL
    
    NAME: “BIGYAN”
    
    AGE: 16

    El primer tipo de datos es un booleano, donde puede tener dos valores: verdadero o falso. El valor de GPA es de punto flotante. YAML también admite el tipo de datos nulo como tenemos para "Cuestiones". El valor de "Nombre”Es una cadena que debe estar entre comillas simples o dobles. YAML también admite cadenas de líneas múltiples y cadenas de líneas múltiples como una sola para facilitar la lectura.

    Cadenas multilínea y de una sola línea

    ---
    
    About: >
    
     Hello this is Ryan
    
     From Alabama and I like to
    
     Play soccer.

    El > El símbolo le permite escribir una cadena de una sola línea en varias líneas. La oración es en realidad una descripción de una sola línea, aunque tenemos varias líneas.

    También podemos tener múltiples cadenas de línea si usamos el | símbolo como permitido:

    About: |
    
     This is a multiline string
    
     And will be printed line wise.

    Lista

    Las listas son muy importantes en YAML.

    A continuación se ofrece un ejemplo de la lista.

    ---
    
    - apple
    
    - banana
    
    - mango

    A continuación se muestra la asignación de escalares a listas, lo cual es muy importante para la mayoría de los archivos de configuración.

    ---
    
    Fruits:
    
     Apples
    
     Banana
    
     Guava 

    Se requiere anidación para mapear escalar a lista. También podemos tener varias listas anidadas, como se muestra en el siguiente ejemplo.

    Automobiles:
    
     Car:
    
         Hyundai
    
         Volkswagen
    
         Ford

    Aquí, los automóviles están dentro de los automóviles y Hyundai está dentro de los automóviles. Este es un ejemplo de anidamiento múltiple. Podemos tener múltiples anidamientos tanto como queramos.

    Subjects:
    
         Engineering:
    
           Mechanical engineering:
    
             Design and manufacture
    
             Automobile
    
             Control and Design
    
           Civil engineering:
    
             Structural engineering
    
             Hydropower
    
           Arts:
    
             Medieval
    
             Modern
    
             Painting

    YAML también proporciona & y * símbolos como anclajes y referencias al ancla para evitar duplicaciones. Son esenciales en los archivos de configuración en marcos como Ruby on Rails para hacer que el archivo YAML sea más pequeño.

    Vea el ejemplo a continuación

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

    que es equivalente a:

    profession: engineer
    
    name: "John"
    
    age: 18

    YAML en Python

    Python admite YAML, incluidos algunos módulos como ruamel y pyyaml. Comience instalando pyyaml

    pip install pyyaml

    Para el tutorial, cree un archivo con un nombre details.yaml

    name: "john"
    
    age:18
    
    gender: male

    Crea otro archivo llamado feed.yaml con el siguiente contenido:

    sports:
    
     football
     basketball
     cricket
     baseball
    
    ---
    countries:
     Brazil
     Lithuania
     Australia
     USA

    Empecemos leyendo el archivo details.yaml

    import yaml
    
    with open('details.yaml') as f:
        
        data = yaml.load(f, Loader=yaml.FullLoader)
        print(data)

    Después de ejecutar el archivo details.py, obtenemos el siguiente resultado

     $ 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)
    

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

    Implementación de YAML en Node.js

    Node.js es un lenguaje de procesamiento del lado del servidor, y la serialización de datos es de enorme importancia en el proceso de desarrollo.

    Para nuestro tutorial, consideremos el siguiente archivo example.yaml:

    name:John
    
    age:18
    
    Hobbies:
    
     Hobby1:Football
    
     Hobby2:BasketBall
    
     Hobby3:Hockey
    
    Job:
    
    -System administrator
    
    -Programmer

    Tenemos una biblioteca npm disponible para Node.js llamada js-yaml. Comencemos instalando el módulo por

    npm install js-yaml

    Luego usamos el js-yaml módulo en nuestro archivo.

    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
    }
    

    Conclusión

    In programación moderna frameworks y aplicaciones donde se almacenan o distribuyen datos, YAML es cada vez más común en los archivos de configuración. YAML apunta a muchas de las mismas aplicaciones de comunicación que el lenguaje de marcado extensible (XML), pero tiene una sintaxis mínima que es deliberadamente diferente de XML.

    Los archivos YAML se pueden crear para estructuras de datos fijas utilizando comandos de impresión que escriben tanto los datos como la decoración particular de YAML. Sin embargo, es preferible un emisor YAML dedicado para volcar varios o complejos datos jerárquicos. De manera similar, con las expresiones regulares, los archivos YAML básicos (por ejemplo, pares clave-valor) se analizan fácilmente.