Увод у ИАМЛ за почетнике

Ако сте програмер који пише АПИ-је, вероватно сте наишли на ИАМЛ иако би ваш примарни алат за серијализацију могао бити ЈСОН.

ИАМЛ има сопствену пријатељску синтаксу и згодан је језик за додавање вашем развојном арсеналу.

Хајде да научимо основе ИАМЛ-а.

Серијализација података

Кад год желите да пошаљете неку структуру података или објекат преко рачунарских мрежа, рецимо на Интернет, морате да га претворите у посебан формат да бисте га прочитали и сачували. Процес је опште познат као серијализација и од огромног је значаја на вебу. Уобичајени пример употребе серијализације је читање података из база података и њихово преношење преко веба.

Неке сериализационе формације укључују ЈСОН, ИАМЛ, КСМЛ.

У овом чланку говоримо о ИАМЛ-у, а на крају чланка ћете моћи да прођете кроз ИАМЛ и имате јасан увод у ИАМЛ.

Шта је ИАМЛ и како ми користи?

ИАМЛ је формат серијализације података који је скраћеница за ИАМЛ није Маркуп језик.

Главна предност коришћења ИАМЛ-а је читљивост и могућност писања. Ако имате конфигурациону датотеку која треба да буде лакша за читање људима, боље је да користите ИАМЛ. ИАМЛ није потпуна замена ЈСОН-а јер ЈСОН и КСМЛ такође имају своја места; ипак, корисно је учити ИАМЛ.

Још једна предност ИАМЛ-а је његова подршка за различите типове података као што су случајеви, низови, речници, листе и скалари. Има добру подршку за најпопуларније језике као што су ЈаваСцрипт, Питхон, Руби, Јава итд.

  Како се пребацити на откључавање лозинком на иПхоне Кс

ИАМЛ подржава само размаке, и осетљив је на велика и мала слова, као и на простор. Картице нису универзално прихваћене. ИАМЛ датотека има екстензију .иамл.

Основна ИАМЛ синтакса

Сваки ИАМЛ почиње са — што означава почетак ИАМЛ датотеке.

Када креирамо АПИ, заинтересовани смо за функцију коју пружа ИАМЛ познату као мапирање.

Следећи примери показују пример мапирања у ИАМЛ-у.

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

Синтакса мапирања је кључна: вредност. (Обратите пажњу на простор, он је веома важан у ИАМЛ-у, за разлику од ЈСОН-а или КСМЛ-а.

ИАМЛ такође подржава типове података као што су знакови, стрингови, цели бројеви, плутајуће вредности и колекције као што су низови, листе које су конструисане од основних типова података.

Типови података у ИАМЛ-у

Погледајмо пример ИАМЛ-а у наставку:

---

MALE: FALSE

GPA: 3.61

ISSUES: NULL

NAME: “BIGYAN”

AGE: 16

Први тип података је логички, где може имати две вредности: тачно или нетачно. Вредност ГПА је са помичним зарезом. ИАМЛ такође подржава нулл тип података као што имамо за „Проблеме“. Вредност „Наме“ је стринг који треба да буде наведен унутар двоструких или једноструких наводника. ИАМЛ такође подржава вишелинијски низ и низ више линија као један ради читљивости.

Вишередни и једноредни низови

---

About: >

 Hello this is Ryan

 From Alabama and I like to

 Play soccer.

Симбол <и>> вам омогућава да упишете један низ у више редова. Реченица је заправо опис у једном реду иако имамо више редова.

Такође можемо имати више низова линија ако користимо | симбол као што је дозвољено:

About: |

 This is a multiline string

 And will be printed line wise.

Листа

Листе су веома важне у ИАМЛ-у.

  Како подесити брзину тастера са стрелицама на вашем Мац-у

Пример листе је дат у наставку.

---

- apple

- banana

- mango

Мапирање са скаларних на листе је приказано испод, што је веома важно за већину конфигурационих датотека.

---

Fruits:

 Apples

 Banana

 Guava 

Угнежђење је потребно за пресликавање скалара у листу. Такође можемо имати више угнежђених листа, као што је приказано у примеру испод.

Automobiles:

 Car:

     Hyundai

     Volkswagen

     Ford

Овде су аутомобили угнежђени у аутомобилима, а Хиундаи у аутомобилима. Ово је пример вишеструког гнежђења. Можемо имати више гнежђења колико год желимо.

Subjects:

     Engineering:

       Mechanical engineering:

         Design and manufacture

         Automobile

         Control and Design

       Civil engineering:

         Structural engineering

         Hydropower

       Arts:

         Medieval

         Modern

         Painting

ИАМЛ такође обезбеђује & и * симболе као сидра и референце на сидро да би се избегло дуплирање. Они су неопходни у конфигурационим датотекама у оквирима као што је Руби он Раилс да би ИАМЛ фајл био мањи.

Погледајте пример у наставку

<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

што је еквивалентно:

profession: engineer

name: "John"

age: 18

ИАМЛ у Питхон-у

Питхон подржава ИАМЛ, укључујући неке модуле као што су руамел и пииамл. Почните тако што ћете инсталирати пииамл

пип инсталл пииамл

За туторијал, направите датотеку са именом детаилс.иамл

name: "john"

age:18

gender: male

Направите другу датотеку под називом феед.иамл са следећим садржајем:

sports:

 football
 basketball
 cricket
 baseball

---
countries:
 Brazil
 Lithuania
 Australia
 USA

Почнимо читањем датотеке детаилс.иамл

import yaml

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

Након покретања датотеке детаилс.пи, добијамо следећи излаз

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

Писање ИАМЛ-а у датотеке у Питхон-у

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)

ИАМЛ имплементација у Ноде.јс

Ноде.јс је језик за обраду на страни сервера, а серијализација података је од огромног значаја у процесу развоја.

  Брзи водич за Кнативе Серверлесс Фрамеворк за почетнике

За наш водич, размотримо следећу датотеку екампле.иамл:

name:John

age:18

Hobbies:

 Hobby1:Football

 Hobby2:BasketBall

 Hobby3:Hockey

Job:

-System administrator

-Programmer

Имамо нпм библиотеку доступну за Ноде.јс под називом јс-иамл. Почнимо тако што ћемо инсталирати модул

npm install js-yaml

Затим користимо јс-иамл модул у нашој датотеци.

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
}

Закључак

У савременим програмским оквирима и апликацијама где се подаци чувају или дистрибуирају, ИАМЛ постаје све чешћи у конфигурационим датотекама. ИАМЛ циља многе од истих комуникационих апликација као Ектенсибле Маркуп Лангуаге (КСМЛ), али има минималну синтаксу која се намерно разликује од КСМЛ-а.

ИАМЛ датотеке се могу креирати за фиксне структуре података помоћу команди за штампање које пишу и податке и ИАМЛ-ову посебну декорацију. Међутим, наменски ИАМЛ емитер је пожељнији за одлагање различитих или сложених хијерархијских података. Слично, са регуларним изразима, основне ИАМЛ датотеке (нпр. парови кључ-вредност) се лако рашчлањују.