Se você é um desenvolvedor que escreve APIs, provavelmente já se deparou com YAML, mesmo que sua ferramenta de serialização primária seja JSON.
YAML tem sua própria sintaxe amigável e é uma linguagem útil para adicionar ao seu arsenal de desenvolvimento.
Vamos aprender o básico de YAML.
últimas postagens
Serialização de dados
Sempre que você deseja enviar alguma estrutura de dados ou um objeto através de redes de computadores, digamos a Internet, é necessário transformá-lo em um formato especial para lê-lo e armazená-lo. O processo é comumente conhecido como serialização e é de enorme importância na web. Um exemplo de uso comum de serialização é ao ler dados de bancos de dados e transferi-los pela web.
Algumas formações de serialização incluem JSON, YAML, XML.
Neste artigo, falamos sobre YAML e, no final do artigo, você poderá trabalhar em YAML e ter uma introdução clara a YAML.
O que é YAML e como isso me beneficia?
YAML é um formato de serialização de dados que significa YAML não é linguagem de marcação.
A principal vantagem de usar YAML é a legibilidade e capacidade de escrita. Se você tiver um arquivo de configuração que precise ser mais fácil de ser lido por humanos, é melhor usar o YAML. YAML não é uma substituição completa de JSON, pois JSON e XML também têm seus lugares; no entanto, é útil aprender YAML.
Outro benefício do YAML é o suporte a vários tipos de dados, como casos, matrizes, dicionários, listas e escalares. Tem bom suporte para as linguagens mais populares como JavaScript, Python, Ruby, Java, etc.
O YAML suporta apenas espaços e diferencia maiúsculas de minúsculas e também de espaço. As guias não são aceitas universalmente. Um arquivo YAML tem a extensão .yaml.
Sintaxe YAML básica
Todo YAML começa com — que denota o início de um arquivo YAML.
Ao criar uma API, estamos interessados em um recurso fornecido pelo YAML conhecido como mapeamento.
Os exemplos a seguir mostram o exemplo de mapeamento em YAML.
--- name: James boy: yes GPA: 3.41
A sintaxe de mapeamento é key: value. (Observe o espaço, é muito importante em YAML, ao contrário de JSON ou XML.
YAML também suporta tipos de dados como caracteres, strings, inteiros, valores flutuantes e coleções como arrays, listas que são construídas a partir de tipos básicos de dados.
Tipos de dados em YAML
Vejamos o exemplo de um YAML abaixo:
--- MALE: FALSE GPA: 3.61 ISSUES: NULL NAME: “BIGYAN” AGE: 16
O primeiro tipo de dado é um booleano, onde pode ter dois valores: true ou false. O valor de GPA é ponto flutuante. O YAML também suporta o tipo de dados nulo como temos para “Issues”. O valor de “Nome” é uma string que precisa ser colocada entre aspas duplas ou simples. O YAML também oferece suporte a strings de várias linhas e strings de várias linhas como uma única para facilitar a leitura.
Strings de várias linhas e de uma linha
--- About: > Hello this is Ryan From Alabama and I like to Play soccer.
O símbolo > permite escrever uma string de uma única linha em várias linhas. A frase é, na verdade, uma descrição de uma única linha, embora tenhamos várias linhas.
Também podemos ter várias strings de linha se usarmos o | símbolo como permitido:
About: | This is a multiline string And will be printed line wise.
Lista
Listas são muito importantes em YAML.
Um exemplo da lista é dado abaixo.
--- - apple - banana - mango
O mapeamento de escalar para listas é mostrado abaixo, o que é muito importante para a maioria dos arquivos de configuração.
--- Fruits: Apples Banana Guava
O aninhamento é necessário para mapear o escalar para a lista. Também podemos ter várias listas aninhadas, conforme mostrado no exemplo abaixo.
Automobiles: Car: Hyundai Volkswagen Ford
Aqui, os carros estão aninhados dentro de automóveis e a Hyundai está aninhada dentro de carros. Este é um exemplo de aninhamento múltiplo. Podemos ter vários aninhamentos o quanto quisermos.
Subjects: Engineering: Mechanical engineering: Design and manufacture Automobile Control and Design Civil engineering: Structural engineering Hydropower Arts: Medieval Modern Painting
YAML também fornece os símbolos & e * como âncoras e referências à âncora para evitar duplicação. Eles são essenciais em arquivos de configuração em frameworks como Ruby on Rails para tornar o arquivo YAML menor.
Veja o exemplo abaixo
<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 é equivalente a:
profession: engineer name: "John" age: 18
YAML em Python
Python suporta YAML, incluindo alguns módulos como ruamel e pyyaml. Comece instalando o pyyaml
pip instalar pyyaml
Para o tutorial, crie um arquivo com o nome details.yaml
name: "john" age:18 gender: male
Crie outro arquivo chamado feed.yaml com o seguinte conteúdo:
sports: football basketball cricket baseball --- countries: Brazil Lithuania Australia USA
Vamos começar lendo o arquivo details.yaml
import yaml with open('details.yaml') as f: data = yaml.load(f, Loader=yaml.FullLoader) print(data)
Depois de executar o arquivo details.py, obtemos a seguinte saída
$ 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)
Escrevendo YAML para arquivos em 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)
Implementação de YAML em Node.js
Node.js é uma linguagem de processamento do lado do servidor, e a serialização de dados é de enorme importância no processo de desenvolvimento.
Para nosso tutorial, vamos considerar o seguinte arquivo example.yaml:
name:John age:18 Hobbies: Hobby1:Football Hobby2:BasketBall Hobby3:Hockey Job: -System administrator -Programmer
Temos uma biblioteca npm disponível para Node.js chamada js-yaml. Vamos começar instalando o módulo por
npm install js-yaml
Em seguida, usamos o módulo js-yaml em nosso arquivo.
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 }
Conclusão
Em estruturas e aplicativos de programação modernos em que os dados são armazenados ou distribuídos, o YAML está se tornando cada vez mais comum em arquivos de configuração. O YAML destina-se a muitos dos mesmos aplicativos de comunicação que o Extensible Markup Language (XML), mas possui uma sintaxe mínima que é deliberadamente diferente do XML.
Os arquivos YAML podem ser criados para estruturas de dados fixas usando comandos de impressão que gravam os dados e a decoração específica do YAML. No entanto, um emissor YAML dedicado é preferível para descarregar dados hierárquicos diversos ou complexos. Da mesma forma, com expressões regulares, arquivos YAML básicos (por exemplo, pares chave-valor) são prontamente analisados.