Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Desarrollo Última actualización: 25 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Si usted es un desarrollador que escribe APIs, probablemente se haya topado con YAML aunque su herramienta de serialización principal sea JSON

YAML tiene su propia sintaxis amigable, y es un lenguaje práctico para añadir a su arsenal de desarrollo

Aprendamos lo básico de YAML

Serialización de datos

Siempre que quiera enviar alguna estructura de datos o un objeto a través de redes informáticas, por ejemplo Internet, tendrá que convertirlo a un formato especial para poder leerlo y almacenarlo. Este proceso se conoce comúnmente como serialización y tiene una enorme importancia en la web. Un ejemplo de uso común de la serialización es cuando se leen datos de bases de datos y se transfieren a través de la web

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

En este artículo, hablamos de YAML, y al final del artículo, usted será capaz de trabajar su camino a través de YAMLy tener una clara introducción a YAML

¿Qué es YAML y en qué me beneficia?

YAML es un formato de serialización de datos cuyos siglas significan YAML no es un lenguaje de marcado

La principal ventaja de utilizar YAML es su legibilidad y capacidad de escritura. Si tiene un archivo de configuración que debe ser más fácil de leer para los humanos, es mejor que utilice 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

Otra ventaja de YAML es su soporte de 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 sólo admite espacios, y es sensible tanto a mayúsculas como a minúsculas. Los tabuladores no se aceptan universalmente. Un archivo YAML tiene extensión .yaml

Sintaxis básica de YAML

Todo YAML comienza con --- que denota el inicio de un archivo YAML

Al crear una API, nos interesa una característica que proporciona YAML conocida como mapeo

Los siguientes ejemplos muestran el ejemplo de mapeo en YAML

--
nombre: James
chico: sí

GPA

: 3.41

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

YAML también soporta tipos de datos como caracteres, cadenas, enteros, valores flotantes, y colecciones como arrays, 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"

EDAD: 16

El primer tipo de datos es un booleano, donde puede tener dos valores: verdadero o falso. El valor de PAM es de coma flotante. YAML también admite el tipo de datos null, como tenemos para "Asuntos El valor de "Nombre" es una cadena que debe entrecomillarse dentro de comillas dobles o simples. YAML también admite cadenas multilínea y cadenas de varias líneas como una sola para facilitar la lectura

Cadenas multilínea y de una sola línea

--

Acerca de: >

 Hola, soy Ryan

 De Alabama y me gusta

 Jugar al fútbol

El símbolo <i>></i> le permite escribir una cadena de una sola línea en varias líneas. La frase es en realidad una descripción de una sola línea aunque tengamos múltiples líneas

También podemos tener cadenas de múltiples líneas si utilizamos el símbolo | como se permite

Acerca de:

|



 Esta es una cadena de varias líneas

 Y se imprimirá por líneas

Lista

Las listas son muy importantes en YAML

A continuación se ofrece un ejemplo de lista

--

 manzana

 plátano

 mango

A continuación se muestra el mapeo de escalares a listas, que es muy importante para la mayoría de los archivos de configuración

--

Frutas:

 Manzanas

 Plátano

 Guayaba 

El anidamiento es necesario para el mapeo de escalar a lista. También podemos tener varias listas anidadas, como se muestra en el siguiente ejemplo
Automóviles

:

 Coche:

 Hyundai

 Volkswagen

 Ford

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

Temas:

 Ingeniería:

 Ingeniería mecánica:

 Diseño y fabricación

 Automóvil

 Control y diseño

 Ingeniería civil:

 Ingeniería estructural

 Energía hidroeléctrica

 Artes:

 Medieval

 Moderna

 Pintura

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

Vea el siguiente ejemplo

<span class="hljs-attr">detalles:</span> <span class="hljs-meta">&amp;detalles</span>
 <span class="hljs-attr">nombre:</span> <span class="hljs-string">"Juan"</span>
edad: 18
profesión: ingeniero

<< :

*

detalles

que es equivalente a

profesión: ingeniero

nombre: "Juan"

edad: 18

YAML en Python

Python soporta YAML, incluyendo algunos módulos como ruamel y pyyaml. Empiece instalando pyyaml

pip install pyyaml

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

nombre: "juan"

edad:18

sexo: masculino

Cree otro archivo con el nombre feed.yaml con el siguiente contenido

deportes:

 fútbol
 baloncesto
 cricket
 béisbol

---
países:
 Brasil
 Lituania
 Australia
 EE.UU

Empecemos por leer el archivo details.yaml

import yaml

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

Tras ejecutar el archivo details.py, obtenemos la siguiente salida

 $ python detalles.py
{'nombre': "juan", 'edad': 18, 'sexo': masculino}
import yaml

with open(r'feed.yaml') as file:
 # El parámetro FullLoader se encarga de la conversión de valores escalares YAML
 # al formato diccionario Python
 fruits_list = yaml.load(file, Loader=yaml.FullLoader)

 print(fruits_list)

Escribir YAML en archivos en Python

import yaml

dict_file = [{'deportes' : ['hockey', 'rugby', 'tenis', 'ping pong', 'fútbol', 'bádminton']},
{'países' : ['Jamaica', 'Inglaterra', 'Nepal', 'Países Bajos', 'Sudáfrica', 'Bolivia', 'Portugal']}]

with open(r'E:\data.yaml', 'w') as file: #crea un nuevo archivo yaml
 data = yaml.dump(dict_file, file)

Implementación de YAML en Node.js

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

nombre:Juan

edad:18

Aficiones:

 Afición1:Fútbol

 Afición2:Baloncesto

 Afición3:Hockey

Trabajo:

-Administrador del sistema

-Programador
Tenemos una biblioteca npm disponible para Node.js llamada js-yaml. Empecemos por instalar el módulo mediante

npm install j

s-yaml
A continuación, utilizamos el módulo js-yaml en nuestro archivo

const yaml = require('js-yaml'); //inicializar js-yaml
const fs = require('fs'); //inicializar filestream

try {
 const result = yaml.load(fs.readFileSync('ejemplo.yml', 'utf8'));
 console.log(result);
} catch (e) {
 console.log(e); //catch exception

}


Conclusión

En los marcos de programación y aplicaciones modernos en los que se almacenan o distribuyen datos, YAML es cada vez más habitual en los archivos de configuración. YAML se dirige a muchas de las mismas aplicaciones de comunicación que el lenguaje de marcado extensible (XML), pero tiene una sintaxis mínima que difiere deliberadamente de XML

Los archivos YAML pueden crearse para estructuras de datos fijas mediante comandos de impresión que escriben tanto los datos como la decoración particular de YAML. Sin embargo, es preferible utilizar un emisor de YAML específico para volcar datos jerárquicos diversos o complejos. Del mismo modo, con expresiones regulares, los archivos YAML básicos (por ejemplo, pares clave-valor) se analizan fácilmente.

  • Bigyan Ghimire
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre desarrollo
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder