Ако сте програмер који пише АПИ-је, вероватно сте наишли на ИАМЛ иако би ваш примарни алат за серијализацију могао бити ЈСОН.
ИАМЛ има сопствену пријатељску синтаксу и згодан је језик за додавање вашем развојном арсеналу.
Хајде да научимо основе ИАМЛ-а.
Преглед садржаја
Серијализација података
Кад год желите да пошаљете неку структуру података или објекат преко рачунарских мрежа, рецимо на Интернет, морате да га претворите у посебан формат да бисте га прочитали и сачували. Процес је опште познат као серијализација и од огромног је значаја на вебу. Уобичајени пример употребе серијализације је читање података из база података и њихово преношење преко веба.
Неке сериализационе формације укључују ЈСОН, ИАМЛ, КСМЛ.
У овом чланку говоримо о ИАМЛ-у, а на крају чланка ћете моћи да прођете кроз ИАМЛ и имате јасан увод у ИАМЛ.
Шта је ИАМЛ и како ми користи?
ИАМЛ је формат серијализације података који је скраћеница за ИАМЛ није Маркуп језик.
Главна предност коришћења ИАМЛ-а је читљивост и могућност писања. Ако имате конфигурациону датотеку која треба да буде лакша за читање људима, боље је да користите ИАМЛ. ИАМЛ није потпуна замена ЈСОН-а јер ЈСОН и КСМЛ такође имају своја места; ипак, корисно је учити ИАМЛ.
Још једна предност ИАМЛ-а је његова подршка за различите типове података као што су случајеви, низови, речници, листе и скалари. Има добру подршку за најпопуларније језике као што су ЈаваСцрипт, Питхон, Руби, Јава итд.
ИАМЛ подржава само размаке, и осетљив је на велика и мала слова, као и на простор. Картице нису универзално прихваћене. ИАМЛ датотека има екстензију .иамл.
Основна ИАМЛ синтакса
Сваки ИАМЛ почиње са — што означава почетак ИАМЛ датотеке.
Када креирамо АПИ, заинтересовани смо за функцију коју пружа ИАМЛ познату као мапирање.
Следећи примери показују пример мапирања у ИАМЛ-у.
--- 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 }
Закључак
У савременим програмским оквирима и апликацијама где се подаци чувају или дистрибуирају, ИАМЛ постаје све чешћи у конфигурационим датотекама. ИАМЛ циља многе од истих комуникационих апликација као Ектенсибле Маркуп Лангуаге (КСМЛ), али има минималну синтаксу која се намерно разликује од КСМЛ-а.
ИАМЛ датотеке се могу креирати за фиксне структуре података помоћу команди за штампање које пишу и податке и ИАМЛ-ову посебну декорацију. Међутим, наменски ИАМЛ емитер је пожељнији за одлагање различитих или сложених хијерархијских података. Слично, са регуларним изразима, основне ИАМЛ датотеке (нпр. парови кључ-вредност) се лако рашчлањују.