Introducere în YAML: Un ghid pentru începători
Dacă activezi în dezvoltarea de API-uri, este foarte probabil să fi întâlnit YAML, chiar dacă JSON este instrumentul tău principal pentru serializarea datelor. YAML, cu sintaxa sa clară și prietenoasă, este o resursă valoroasă pe care merită să o adaugi în arsenalul tău de dezvoltator.
Acest articol te va ghida prin elementele de bază ale YAML, oferindu-ți o înțelegere solidă a modului în care funcționează și a beneficiilor pe care le oferă.
Ce este serializarea datelor?
Atunci când dorești să transmiți o structură de date sau un obiect prin rețele, cum ar fi internetul, trebuie să o transformi într-un format special. Acest proces, cunoscut sub numele de serializare, este crucial în lumea web. Un exemplu comun este transferul datelor din baze de date către aplicații web.
Printre formatele populare de serializare se numără JSON, YAML și XML. Aici ne vom concentra pe YAML, oferindu-ți la final o înțelegere clară a acestui format.
De ce să alegi YAML?
YAML, un acronim recursiv pentru „YAML Ain’t Markup Language,” este un format de serializare a datelor care pune accent pe lizibilitate. Dacă lucrezi cu fișiere de configurare care trebuie să fie ușor de înțeles de oameni, YAML este o alegere excelentă. Deși nu înlocuiește complet JSON sau XML, care își păstrează utilitatea în anumite contexte, învățarea YAML este o investiție valoroasă.
Un alt avantaj al YAML este suportul său pentru diverse tipuri de date, precum cazuri, matrice, dicționare, liste și scalari. De asemenea, are o compatibilitate bună cu limbaje populare ca JavaScript, Python, Ruby și Java.
YAML folosește doar spații pentru indentare și este sensibil la majuscule și minuscule. Tab-urile nu sunt universal acceptate. Fișierele YAML au extensia .yaml.
Sintaxa de bază YAML
Fiecare fișier YAML începe cu ---
, care marchează debutul documentului. În dezvoltarea de API-uri, funcția de mapare a YAML este deosebit de importantă.
Exemple de mapare YAML:
--- nume: Ion elev: da medie: 9.52
Maparea are sintaxa cheie: valoare
. Observă că spațiile sunt esențiale în YAML, spre deosebire de JSON sau XML.
YAML acceptă diverse tipuri de date, precum caractere, șiruri, numere întregi, valori flotante și colecții ca matrice și liste, construite din aceste tipuri de date fundamentale.
Tipuri de date în YAML
Exemplu de YAML cu diverse tipuri de date:
--- sex_masculin: fals medie: 9.75 probleme: nul nume: "ANDREI" varsta: 17
Aici, vedem tipul boolean (fals
), număr flotant (9.75
), nul (nul
), șir ("ANDREI"
) și întreg (17
). YAML suportă șiruri pe mai multe linii, atât ca o singură linie logică, cât și ca linii multiple pentru lizibilitate.
Șiruri de caractere pe o singură linie și pe mai multe linii
Exemplu de șir pe mai multe linii:
--- despre_mine: > Salut, sunt Ana din București și îmi place să citesc.
Simbolul >
permite scrierea unui șir pe mai multe linii, care este interpretat ca o singură linie logică. Pentru a păstra structura liniilor, se folosește simbolul |
:
despre_mine: | Acesta este un șir pe mai multe linii care va păstra formatarea.
Liste în YAML
Listele sunt elemente esențiale în YAML.
Exemplu de listă simplă:
--- - mar - banana - portocala
Maparea de la scalar la liste este importantă pentru fișierele de configurare:
--- fructe: - mar - banana - guava
Indentarea este esențială pentru maparea scalară la liste. De asemenea, se pot crea liste imbricate:
masini: marca: - Dacia - Renault - Ford
Aici, mărcile sunt imbricate sub categoria „masini”, iar Dacia, Renault și Ford sub „marca”. Se pot adăuga mai multe niveluri de imbricare.
materii: inginerie: inginerie_mecanica: - proiectare - automobile - control inginerie_civila: - structuri - hidroenergie arte: - medievala - moderna - pictura
YAML utilizează simbolurile &
și *
pentru ancore și referințe, evitând duplicarea, utilă în configurări, de exemplu, în Ruby on Rails.
Exemplu de folosire a ancorelor:
detalii: &detalii nume: "Maria" varsta: 22 profesie: arhitect << : *detalii
Acesta este echivalent cu:
profesie: arhitect nume: "Maria" varsta: 22
YAML și limbaje de programare
YAML în Python
Python suportă YAML prin module ca ruamel
și pyyaml
. Pentru a începe, instalează pyyaml
:
pip install pyyaml
Creează un fișier date_personale.yaml
:
nume: "Ana" varsta: 25 sex: feminin
Și un alt fișier, preferinte.yaml
:
sporturi: - fotbal - baschet - tenis --- tari: - Romania - Franta - Spania
Pentru a citi date_personale.yaml
, folosește:
import yaml with open('date_personale.yaml') as f: data = yaml.load(f, Loader=yaml.FullLoader) print(data)
Rezultatul va fi:
{'nume': 'Ana', 'varsta': 25, 'sex': 'feminin'}
Pentru a citi preferinte.yaml
:
import yaml with open('preferinte.yaml') as file: preferinte = yaml.load(file, Loader=yaml.FullLoader) print(preferinte)
Scrierea în YAML cu Python
import yaml date = [{'sporturi' : ['handbal', 'volei', 'inot', 'atletism', 'baschet']}, {'tari' : ['Italia', 'Germania', 'Japonia', 'Canada', 'Australia']}] with open('date_noi.yaml', 'w') as file: yaml.dump(date, file)
YAML în Node.js
În Node.js, serializarea datelor este esențială. Folosim modulul js-yaml
.
Pentru a începe, instalează modulul:
npm install js-yaml
Creează un fișier exemplu.yaml
:
nume: Andrei varsta: 20 hobby-uri: hobby1: Ciclism hobby2: Drumetii hobby3: Inot job: - Student - Programator
Folosește acest cod Node.js:
const yaml = require('js-yaml'); const fs = require('fs'); try { const rezultatul = yaml.load(fs.readFileSync('exemplu.yaml', 'utf8')); console.log(rezultatul); } catch (e) { console.log(e); }
Concluzie
YAML devine tot mai popular în fișierele de configurare din cadrul aplicațiilor moderne. Deși are multe aplicații comune cu XML, YAML se distinge prin sintaxa sa simplă.
YAML se pretează atât la structuri de date fixe create prin comenzi de tipărire, cât și la date ierarhice complexe, unde un parser dedicat este recomandat. Chiar și fișierele de bază YAML, cu structuri cheie-valoare, pot fi analizate ușor cu expresii regulate.