Si es un desarrollador que escribe API, probablemente se haya topado con YAML, aunque su principal herramienta de serialización podría ser 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.
Tabla de contenido
Serialización de datos
Siempre que desee enviar una estructura de datos o un objeto a través de redes informáticas, por ejemplo, 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 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 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 un lenguaje de marcado.
La principal ventaja de usar YAML es la legibilidad y 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 su compatibilidad con varios tipos de datos, como casos, matrices, diccionarios, listas y escalares. Tiene buen soporte para los lenguajes más populares como JavaScript, Python, Ruby, Java, etc.
YAML solo admite espacios, y distingue mayúsculas de minúsculas y espacios. Las pestañas no se aceptan universalmente. Un archivo YAML tiene la extensión .yaml.
Sintaxis básica de YAML
Cada YAML comienza con, lo que indica el inicio de un archivo YAML.
Al crear 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, 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 coma flotante. YAML también admite el tipo de datos nulo como lo tenemos para «Problemas». El valor de «Nombre» es una cadena que debe citarse entre comillas simples o dobles. YAML también admite cadenas de varias líneas y cadenas de varias líneas 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 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 varias cadenas de líneas si usamos | 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 muestra 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 anidamiento 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 autos están anidados dentro de automóviles, y Hyundai está anidado dentro de autos. 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 símbolos & y * como anclas y referencias al ancla para evitar la duplicación. 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
<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
que es equivalente a:
profession: engineer name: "John" age: 18
YAML en Python
Python es compatible con YAML, incluidos algunos módulos como ruamel y pyyaml. Comience instalando pyyaml
pip instalar pyyaml
Para el tutorial, cree un archivo con el nombre detalles.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
Comencemos leyendo el archivo detalles.yaml
import yaml with open('details.yaml') as f: data = yaml.load(f, Loader=yaml.FullLoader) print(data)
Después de ejecutar el archivo detalles.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 ejemplo.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 módulo js-yaml 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
En los marcos de trabajo de programación modernos y las aplicaciones donde los datos se almacenan o distribuyen, YAML se está volviendo cada vez más común en los archivos de configuración. YAML tiene como objetivo 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 descargar varios datos jerárquicos o complejos. De manera similar, con las expresiones regulares, los archivos YAML básicos (por ejemplo, pares clave-valor) se analizan fácilmente.