{"id":54187,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/testmace-moshhnaya-ide-dlya-raboty-s-api"},"modified":"2020-02-18T14:02:10","modified_gmt":"2020-02-18T11:02:10","slug":"testmace-moshhnaya-ide-dlya-raboty-s-api","status":"publish","type":"post","link":"https:\/\/prohoster.info\/lv\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","title":{"rendered":"TestMace \u2014 jaud\u012bga IDE darbam ar API","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Sveiki visi! \u0160odien v\u0113lamies iepaz\u012bstin\u0101t IT kopienu ar m\u016bsu produktu \u2014 IDE darbam ar API <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex>. Varb\u016bt da\u017ei no jums jau zina par mums no <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/blog\/\">iepriek\u0161\u0113jiem rakstiem<\/a><\/noindex>. Tom\u0113r visaptvero\u0161a r\u012bka apskata nav bijis, t\u0101d\u0113\u013c nov\u0113r\u0161am \u0161o ne\u0113rt\u012bbu.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 jaud\u012bga IDE darbam ar API\" src=\"\/wp-content\/uploads\/2019\/12\/798c0783510a07e7fd162bdf14151c29.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"motivaciya\">Motiv\u0101cija<\/h1>\n<p><\/p>\n<p>V\u0113los s\u0101kt ar to, k\u0101 m\u0113s non\u0101c\u0101m l\u012bdz \u0161\u0101dai dz\u012bvei un nol\u0113m\u0101m izstr\u0101d\u0101t savu r\u012bku, lai veiktu uzlabotu darbu ar API. S\u0101ksim ar funkcionalit\u0101tes sarakstu, k\u0101d\u0101m j\u0101b\u016bt produktam, ko, m\u016bsupr\u0101t, var\u0113tu saukt par \"IDE darbam ar API\":<\/p>\n<p><\/p>\n<ul>\n<li>Piepras\u012bjumu un scen\u0101riju (piepras\u012bjumu sec\u012bbu) veido\u0161ana un izpilde<\/li>\n<li>Da\u017e\u0101du testu rakst\u012b\u0161ana<\/li>\n<li>Testu \u0123ener\u0113\u0161ana<\/li>\n<li>Darbs ar API aprakstiem, tostarp import\u0113\u0161ana no t\u0101diem form\u0101tiem k\u0101 Swagger, OpenAPI, WADL utt.<\/li>\n<li>Piepras\u012bjumu moku\u0161ana<\/li>\n<li>Laba atbalsta nodro\u0161in\u0101\u0161ana vienam vai vair\u0101kiem program\u0113\u0161anas valod\u0101m skriptu rakst\u012b\u0161anai, tostarp integr\u0101cija ar popul\u0101r\u0101m bibliot\u0113m<\/li>\n<li>utt.<\/li>\n<\/ul>\n<p><\/p>\n<p>Sarakstu var papildin\u0101t p\u0113c patikas. Turkl\u0101t ir svar\u012bgi izveidot ne tikai pa\u0161u IDE, bet ar\u012b noteiktu infrastrukt\u016bru, piem\u0113ram, m\u0101ko\u0146u sinhroniz\u0101ciju, komandrindas r\u012bkus, tie\u0161saistes uzraudz\u012bbas pakalpojumu utt. Galu gal\u0101 p\u0113d\u0113jo gadu tendences prasa ne tikai sp\u0113c\u012bgu lietotnes funkcionalit\u0101ti, bet ar\u012b pat\u012bkamu interfeisu.<\/p>\n<p><\/p>\n<p>Kam \u0161\u0101ds r\u012bks ir nepiecie\u0161ams? Ac\u012bmredzami, visiem, kas kaut k\u0101 ir saist\u012bti ar API izstr\u0101di un test\u0113\u0161anu \u2014 izstr\u0101d\u0101t\u0101jiem un test\u0113t\u0101jiem =). Turkl\u0101t, ja pirmo grupai parasti pietiek ar vienk\u0101r\u0161u piepras\u012bjumu un vienk\u0101r\u0161u scen\u0101riju izpildi, tad test\u0113t\u0101jiem tas ir viens no galvenajiem r\u012bkiem, kas papildus tam j\u0101iek\u013cauj jaud\u012bgs testu rakst\u012b\u0161anas meh\u0101nisms ar iesp\u0113ju tos izpild\u012bt CI.<\/p>\n<p><\/p>\n<p>T\u0101tad, vadoties p\u0113c \u0161iem krit\u0113rijiem, m\u0113s s\u0101k\u0101m izstr\u0101d\u0101t savu produktu. Apskat\u012bsim, kas mums izdevies \u0161aj\u0101 posm\u0101.<\/p>\n<p><\/p>\n<h1 id=\"bystryy-start\">\u0100tr\u0101 s\u0101k\u0161ana<\/h1>\n<p><\/p>\n<p>S\u0101ksim ar pirmo iepaz\u012b\u0161anos ar lietotni. To var lejupiel\u0101d\u0113t <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\/\">m\u016bsu vietn\u0113<\/a><\/noindex>. \u0160obr\u012bd tiek atbalst\u012btas visas 3 galven\u0101s platformas \u2014 Windows, Linux, MacOS. Lejupiel\u0101d\u0113jiet, instal\u0113jiet, palai\u017eiet. Pirmaj\u0101 palai\u0161an\u0101 j\u016bs varat redz\u0113t \u0161\u0101du logu:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 jaud\u012bga IDE darbam ar API\" src=\"\/wp-content\/uploads\/2019\/12\/dbbd26d8656488cd11716f7dbede9ec7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Noklik\u0161\u0137iniet uz pluss z\u012bmes aug\u0161\u0113j\u0101 satura lauk\u0101, lai izveidotu savu pirmo piepras\u012bjumu. Tabul\u0101 ar piepras\u012bjumu izskat\u0101s \u0161\u0101di:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 jaud\u012bga IDE darbam ar API\" src=\"\/wp-content\/uploads\/2019\/12\/d76205f43ec821018642a3d354532e7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pajiem pie t\u0101 s\u012bk\u0101k. Piepras\u012bjumu saskarne \u013coti atg\u0101dina popul\u0101ro rest-klientu saskarni, kas atvieglo migr\u0101ciju no l\u012bdz\u012bgiem r\u012bkiem. Veiksim pirmo piepras\u012bjumu uz URL <noindex><a rel=\"nofollow\" href=\"https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8\">https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8<\/a><\/noindex><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 jaud\u012bga IDE darbam ar API\" src=\"\/wp-content\/uploads\/2019\/12\/19e639baa1e0d51f1a40b76ae9144d6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pirmo reizi apl\u016bkojot, atbildes panelis ar\u012b nerada nek\u0101das p\u0101rsteigumus. Tom\u0113r v\u0113los v\u0113rst j\u016bsu uzman\u012bbu uz da\u017e\u0101m iesp\u0113j\u0101m:<\/p>\n<p><\/p>\n<ol>\n<li>Atbildes saturs ir att\u0113lots koka form\u0101t\u0101, kas, pirmk\u0101rt, pievieno informativit\u0101ti un, otrk\u0101rt, \u013cauj pievienot da\u017eas interesantas funkcijas, par kur\u0101m zem\u0101k.<\/li>\n<li>Ir cilne Assertions, kur\u0101 tiek par\u0101d\u012bts testu saraksts \u0161im piepras\u012bjumam.<\/li>\n<\/ol>\n<p><\/p>\n<p>K\u0101 var redz\u0113t, m\u016bsu r\u012bku var izmantot k\u0101 \u0113rtu rest-klientu. Tom\u0113r m\u0113s \u0161eit neb\u016btu san\u0101ku\u0161i, ja t\u0101 iesp\u0113jas b\u016btu ierobe\u017eotas tikai ar piepras\u012bjumu s\u016bt\u012b\u0161anu. T\u0101l\u0101k es izkl\u0101st\u012b\u0161u pamata j\u0113dzienus un funkcionalit\u0101tes TestMace.<\/p>\n<p><\/p>\n<h1 id=\"osnovnye-ponyatiya-i-vozmozhnosti\">Pamati j\u0113dzieni un iesp\u0113jas<\/h1>\n<p><\/p>\n<h2 id=\"uzel\">Mezgls<\/h2>\n<p><\/p>\n<p>TestMace funkcionalit\u0101te ir sadal\u012bta da\u017e\u0101dos mezglu tipos. Virs\u0113j\u0101 piem\u0113r\u0101 m\u0113s demonstr\u0113j\u0101m RequestStep mezgla darb\u012bbu. Tom\u0113r \u0161obr\u012bd lietotn\u0113 ir pieejami ar\u012b \u0161\u0101di mezglu tipi:<\/p>\n<p><\/p>\n<ul>\n<li>RequestStep. Tas ir mezgls, ar kuru var izveidot piepras\u012bjumu. K\u0101 b\u0113rna elements tam var b\u016bt tikai viens Assertion mezgls.<\/li>\n<li>Assertion. Mezgls tiek izmantots testu rakst\u012b\u0161anai. Var b\u016bt b\u0113rna mezgls tikai RequestStep mezglam.<\/li>\n<li>Folder. At\u013cauj grup\u0113t Folder un RequestStep mezglus sav\u0101 iek\u0161ien\u0113.<\/li>\n<li>Project. Tas ir saknes mezgls, kas autom\u0101tiski tiek izveidots, kad tiek izveidots projekts. P\u0101r\u0113j\u0101 zi\u0146\u0101 tas atk\u0101rto Folder mezgla funkcionalit\u0101ti.<\/li>\n<li>Link. Saite uz Folder vai RequestStep mezglu. \u013bauj p\u0101rtulkot piepras\u012bjumus un scen\u0101rijus.<\/li>\n<li>utt.<\/li>\n<\/ul>\n<p><\/p>\n<p>Veidi atrodas scratches (pane\u013ci pa kreisi apak\u0161\u0101, kas kalpo \u0101trai \"vienreiz\u0113ju\" piepras\u012bjumu izveidei) un projekt\u0101 (pane\u013ci pa kreisi aug\u0161\u0101), pie kura m\u0113s apst\u0101sies s\u012bk\u0101k.<\/p>\n<p><\/p>\n<h2 id=\"proekt\">Projekts<\/h2>\n<p><\/p>\n<p>Palaidn\u0113 j\u016bs var\u0113j\u0101t paman\u012bt vientu\u013cu Project rindu aug\u0161\u0113j\u0101 kreisaj\u0101 st\u016br\u012b. Tas ir projekta koka sakne. Palaidn\u0113 izveidojas pagaidu projekts, kura ce\u013c\u0161 atkar\u012bgs no j\u016bsu oper\u0113t\u0101jsist\u0113mas. J\u016bs jebkur\u0101 br\u012bd\u012b varat p\u0101rvietot projektu jums t\u012bkamos viet\u0101s.<\/p>\n<p><\/p>\n<p>Galvenais projekta m\u0113r\u0137is ir iesp\u0113ja saglab\u0101t darbus failu sist\u0113m\u0101 un turpm\u0101kai sinhroniz\u0101cijai caur versiju kontroles sist\u0113m\u0101m, scen\u0101riju izpildei CI, izmai\u0146u p\u0101rskat\u012b\u0161anai utt.<\/p>\n<p><\/p>\n<h2 id=\"peremennye\">Main\u012bgie<\/h2>\n<p><\/p>\n<p>Main\u012bg\u0101s ir viens no galvenajiem lietojumprogrammas meh\u0101nismiem. Tie, kas str\u0101d\u0101 ar r\u012bkiem, kas l\u012bdz\u012bgi TestMace, iesp\u0113jams, jau ir sapratu\u0161i, par ko b\u016bs runa. T\u0101tad, main\u012bg\u0101s ir veids, k\u0101 saglab\u0101t kop\u012bgus datus un sazin\u0101ties starp mezgliem. Analogs, piem\u0113ram, ir vides main\u012bgie Postman vai Insomnia. Tom\u0113r m\u0113s esam g\u0101ju\u0161i t\u0101l\u0101k un att\u012bst\u012bju\u0161i t\u0113mu. TestMace main\u012bg\u0101s var iestat\u012bt mezgla l\u012bmen\u012b. Jebkur\u0101. Past\u0101v ar\u012b meh\u0101nisms, kas \u013cauj mantojot main\u012bgos no priek\u0161te\u010diem un p\u0101rkl\u0101jot main\u012bgos p\u0113cn\u0101c\u0113j\u0101. Turkl\u0101t past\u0101v virkne ieb\u016bv\u0113to main\u012bgo, kuru nosaukumi s\u0101kas ar <code>$<\/code>. \u0160eit ir da\u017ei no tiem:<\/p>\n<p><\/p>\n<ul>\n<li><code>$prevStep<\/code> \u2014 saite uz iepriek\u0161\u0113j\u0101 mezgla main\u012bgajiem<\/li>\n<li><code>$nextStep<\/code> \u2014 saite uz n\u0101kam\u0101 mezgla main\u012bgajiem<\/li>\n<li><code>$parent<\/code> \u2014 tas pats, bet attiec\u012bb\u0101 uz priek\u0161teci<\/li>\n<li><code>$response<\/code> \u2014 atbilde no servera<\/li>\n<li><code>$env<\/code> \u2014 pa\u0161reiz\u0113jie vides main\u012bgie<\/li>\n<li><code>$dynamicVar<\/code> \u2014 dinamiskie main\u012bgie, kas tiek rad\u012bti izpildes laik\u0101 vai piepras\u012bjum\u0101<\/li>\n<\/ul>\n<p><\/p>\n<p><code>$env<\/code> \u2014 b\u016bt\u012bb\u0101 tie ir parasti projekta l\u012bme\u0146a main\u012bgie, tom\u0113r vides main\u012bgo kopums main\u0101s atkar\u012bb\u0101 no izv\u0113l\u0113t\u0101s vides. <\/p>\n<p><\/p>\n<p>Piek\u013cuve main\u012bgajam notiek caur <code>${variable_name}<\/code><br \/>\nK\u0101 main\u012bg\u0101 v\u0113rt\u012bba var b\u016bt cita main\u012bg\u0101 v\u0113rt\u012bba vai pat vesels izteikums. Piem\u0113ram, k\u0101 main\u012bg\u0101 URL var b\u016bt izteikums \u0161\u0101d\u0101 veid\u0101<br \/>\n<code>http:\/\/${host}:${port}\/${endpoint}<\/code>.<\/p>\n<p><\/p>\n<p>Atsevi\u0161\u0137i j\u0101atz\u012bm\u0113 iesp\u0113ja pie\u0161\u0137irt main\u012bgus skripta izpildes laik\u0101. Piem\u0113ram, bie\u017ei rodas nepiecie\u0161am\u012bba saglab\u0101t autentifik\u0101cijas datus (tokenu vai visu galveni), kas tika sa\u0146emti no servera p\u0113c veiksm\u012bgas pieteik\u0161an\u0101s. TestMace \u013cauj saglab\u0101t \u0161\u0101dus datus dinamiskaj\u0101s main\u012bgajos no viena no priek\u0161te\u010diem. Lai izvair\u012btos no konflikt\u0113jo\u0161\u0101m situ\u0101cij\u0101m ar jau eso\u0161iem \"statiskajiem\" main\u012bgajiem, dinamiskie main\u012bgie ir izcelti atsevi\u0161\u0137\u0101 objekt\u0101. <code>$dynamicVar<\/code>. <\/p>\n<p><\/p>\n<h2 id=\"scenarii\">Scen\u0101riji<\/h2>\n<p><\/p>\n<p>Izmantojot visas iepriek\u0161 min\u0113t\u0101s iesp\u0113jas, j\u016bs varat izpild\u012bt veselas piepras\u012bjumu scen\u0101rijus. Piem\u0113ram, rad\u012b\u0161anas entit\u0101te -&gt; piepras\u012bjums p\u0113c entit\u0101tes -&gt; entit\u0101tes dz\u0113\u0161ana. \u0160aj\u0101 gad\u012bjum\u0101 j\u016bs, piem\u0113ram, varat izmantot Folder mezglu, lai grup\u0113tu vair\u0101kus RequestStep mezglus.<\/p>\n<p><\/p>\n<h2 id=\"avtodopolnenie-i-podsvetka-znacheniya-vyrazheniya\">Autom\u0101tisk\u0101 pabeig\u0161ana un izteikuma v\u0113rt\u012bbas izgaismo\u0161ana<\/h2>\n<p><\/p>\n<p>Lai \u0113rti str\u0101d\u0101tu ar main\u012bgajiem (un ne tikai), ir nepiecie\u0161ama autom\u0101tisk\u0101 papildin\u0101\u0161ana. Protams, ar\u012b izteikumu v\u0113rt\u012bbu izcel\u0161ana, lai viegl\u0101k un \u0113rt\u0101k saprastu, cik liela ir konkr\u0113t\u0101 main\u012bg\u0101 v\u0113rt\u012bba. \u0160eit ir klasisks gad\u012bjums, kad lab\u0101k vienu reizi redz\u0113t, nek\u0101 simtreiz dzird\u0113t:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 jaud\u012bga IDE darbam ar API\" src=\"\/wp-content\/uploads\/2019\/12\/cf9d30c9623b18575825d4282b8fe3e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>J\u0101atz\u012bm\u0113, ka autom\u0101tisk\u0101 papildin\u0101\u0161ana ir ieviesta ne tikai main\u012bgajiem, bet ar\u012b, piem\u0113ram, virsrakstiem, zin\u0101mu virsrakstu v\u0113rt\u012bb\u0101m (piem\u0113ram, autom\u0101tisk\u0101 papildin\u0101\u0161ana Content-Type virsrakstam), protokoliem un daudz\u0101m cit\u0101m liet\u0101m. Saraksts tiek past\u0101v\u012bgi papildin\u0101ts ar programmas izaugsmi.<\/p>\n<p><\/p>\n<h2 id=\"undoredo\">Atcelt\/izdar\u012bt atk\u0101rtoti<\/h2>\n<p><\/p>\n<p>Atcel\u0161ana\/atk\u0101rto\u0161ana ir \u013coti \u0113rta funkcija, tom\u0113r, kaut k\u0101p\u0113c, t\u0101 nav pieejama visur (un r\u012bki darbam ar API nav iz\u0146\u0113mums). Bet m\u0113s neesam no tiem!) Atcelt\/atk\u0101rtot ir ieviests m\u016bsu projekta ietvaros, \u013caujot atcelt ne tikai konkr\u0113tas mezgla redi\u0123\u0113\u0161anu, bet ar\u012b t\u0101 izveidi, dz\u0113\u0161anu, p\u0101rvieto\u0161anu utt. Viskritisk\u0101k\u0101s oper\u0101cijas prasa apstiprin\u0101jumu.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov\">Testu izveide<\/h2>\n<p><\/p>\n<p>Testu izveidi nodro\u0161ina Assertion mezgls. Viens no galvenajiem aspektiem ir iesp\u0113ja izveidot testus bez program\u0113\u0161anas, izmantojot ieb\u016bv\u0113tos redaktorus. <\/p>\n<p><\/p>\n<p>Assertion mezgls sast\u0101v no vair\u0101kiem assertion (apgalvojumu). Katram assertion ir savs veids, \u0161obr\u012bd eksist\u0113 vair\u0101ki assertion veidi.<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>Compare values \u2014 vienk\u0101r\u0161i sal\u012bdzina 2 v\u0113rt\u012bbas. Ir vair\u0101ki sal\u012bdzin\u0101\u0161anas operatori \"vien\u0101ds\", \"nevien\u0101ds\", \"vair\u0101k\", \"vair\u0101k vai vien\u0101ds\", \"maz\u0101k\", \"maz\u0101k vai vien\u0101ds\".<\/p>\n<p>\n<\/li>\n<li>\n<p>Satur v\u0113rt\u012bbu \u2014 p\u0101rbauda, vai apak\u0161virkne atrodas virknes sast\u0101v\u0101.<\/p>\n<p>\n<\/li>\n<li>\n<p>XPath \u2014 p\u0101rbauda, vai p\u0113c selektora XML atrodas noteikta v\u0113rt\u012bba.<\/p>\n<p>\n<\/li>\n<li>\n<p>JavaScript assertion \u2014 patva\u013c\u012bgs skripts JavaScript valod\u0101, kas atgrie\u017e true, ja viss ir izdevies, un false, ja neizdodas.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<p>V\u0113r\u0161os pie jums, ka tikai p\u0113d\u0113jais prasa no lietot\u0101ja program\u0113\u0161anas prasmes, bet p\u0101r\u0113jie 3 assertion tiek izveidoti, izmantojot grafisko interfeisu. L\u016bk, piem\u0113ram, k\u0101 izskat\u0101s sal\u012bdzin\u0101\u0161anas v\u0113rt\u012bbu assertion izveides dialogs:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 jaud\u012bga IDE darbam ar API\" src=\"\/wp-content\/uploads\/2019\/12\/e71e11fb0fb664d1d9751a71fbdcc850.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u012ast\u0101 \u0137irs\u012btis uz k\u016bkas ir \u0101tra assertion izveide no atbildes, paskatieties uz to!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 jaud\u012bga IDE darbam ar API\" src=\"\/wp-content\/uploads\/2019\/12\/3b86084419339a7a05a3548df5c12d6a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tom\u0113r \u0161\u0101diem assertion ir ac\u012bmredzamas ierobe\u017eojumi, saskaroties ar kuriem j\u016bs varat izmantot javascript assertion. Un \u0161eit TestMace ar\u012b nodro\u0161ina \u0113rtu vidi ar autom\u0101tisko papildin\u0101\u0161anu, sintakses izcel\u0161anu un pat statisko anal\u012bzi.<\/p>\n<p><\/p>\n<h2 id=\"opisanie-api\">API apraksts<\/h2>\n<p><\/p>\n<p>TestMace \u013cauj ne tikai izmantot API, bet ar\u012b to dokument\u0113t. Turkl\u0101t pa\u0161a apraksta strukt\u016bra ir hierarhiska un dabiski iek\u013caujas p\u0101r\u0113j\u0101 projekt\u0101. V\u0113l vair\u0101k, \u0161obr\u012bd ir iesp\u0113ja import\u0113t API aprakstu no Swagger 2.0 \/ OpenAPI 3.0 form\u0101tiem. Apraksts nav tikai statisks, bet cie\u0161i integr\u0113jas ar p\u0101r\u0113jo projektu, piem\u0113ram, ir pieejama URL, HTTP galvenes, query parametru un citu autom\u0101tisk\u0101 pabeig\u0161ana, un n\u0101kotn\u0113 m\u0113s pl\u0101nojam pievienot testus atbilsto\u0161i API aprakstam.<\/p>\n<p><\/p>\n<h2 id=\"sharing-nod\">Zaru nodo\u0161ana<\/h2>\n<p><\/p>\n<p>Gad\u012bjums: jums var\u0113tu v\u0113l\u0113ties padal\u012bties ar problem\u0101tisku piepras\u012bjumu vai pat veselu scen\u0101riju ar kol\u0113\u0123i vai vienk\u0101r\u0161i pievienot to k\u013c\u016bdas zi\u0146ojumam. TestMace segs ar\u012b \u0161o gad\u012bjumu: lietotne \u013cauj serializ\u0113t jebkuru mezglu un pat apak\u0161kokus URL form\u0101t\u0101. Kop\u0113jiet un iel\u012bm\u0113jiet, un j\u016bs jau viegli esat p\u0101rvietojusi piepras\u012bjumu uz citu ma\u0161\u012bnu vai projektu.<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-hraneniya-proekta\">Cilv\u0113kam saprotams projekta glab\u0101\u0161anas form\u0101ts<\/h2>\n<p><\/p>\n<p>\u0160obr\u012bd katrs mezgls tiek glab\u0101ts atsevi\u0161\u0137\u0101 fail\u0101 ar papla\u0161in\u0101jumu yml (k\u0101 tas ir gad\u012bjum\u0101 ar Assertion mezglu), vai ar\u012b map\u0113 ar mezgla nosaukumu un failu index.yml taj\u0101.<br \/>\nL\u016bk, k\u0101 izskat\u0101s failar \u013caujam ar piepras\u012bjumu, kuru m\u0113s iepriek\u0161 apskat\u012bj\u0101m:<\/p>\n<p>\n<b class=\"spoiler_title\">index.yml<\/b><\/p>\n<pre><code class=\"ruby\">children: []\nvariables: {}\ntype: RequestStep\nassignVariables: []\nrequestData:\n  request:\n    method: GET\n    url: 'https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8'\n  headers: []\n  disabledInheritedHeaders: []\n  params: []\n  body:\n    type: Json\n    jsonBody: ''\n    xmlBody: ''\n    textBody: ''\n    formData: []\n    file: ''\n    formURLEncoded: []\n  strictSSL: Inherit\nauthData:\n  type: inherit\nname: Scratch 1<\/code><\/pre>\n<p><\/p>\n<p>K\u0101 redzat, viss ir skaidrs. Ja v\u0113las, \u0161\u0101du form\u0101tu ir pavisam \u0113rti redi\u0123\u0113t ar\u012b manu\u0101li.<\/p>\n<p><\/p>\n<p>Mapju hierarhija failu sist\u0113m\u0101 piln\u012bb\u0101 atk\u0101rto mezglu hierarhiju projekt\u0101. Piem\u0113ram, scen\u0101rijs ar sekojo\u0161o veidu:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 jaud\u012bga IDE darbam ar API\" src=\"\/wp-content\/uploads\/2019\/12\/8f08d934a977e4fdacd269f4ea0c34b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Map\u0113 failu sist\u0113m\u0101 tas tiek attiec\u012bgi strukt\u016briz\u0113ts (par\u0101d\u012bta tikai mapju hierarhija, bet j\u0113ga ir skaidra)<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 jaud\u012bga IDE darbam ar API\" src=\"\/wp-content\/uploads\/2019\/12\/60a54704979f5a77ee05735fd8ebe824.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kas atvieglo projekta p\u0101rskata procesu.<\/p>\n<p><\/p>\n<h2 id=\"import-iz-postman\">Import\u0113\u0161ana no Postman<\/h2>\n<p><\/p>\n<p>Izlasot visu iepriek\u0161 min\u0113to, da\u017ei lietot\u0101ji var v\u0113l\u0113ties izm\u0113\u0123in\u0101t (vai ne?) jauno produktu vai (nu k\u0101p\u0113c gan n\u0113!) piln\u012bb\u0101 to izmantot sav\u0101 projekt\u0101. Tom\u0113r migr\u0101ciju var aptur\u0113t liels skaits izstr\u0101d\u0146u taj\u0101 pa\u0161\u0101 Postman. \u0160\u0101d\u0101m situ\u0101cij\u0101m TestMace atbalsta kolekciju import\u0113\u0161anu no Postman. \u0160obr\u012bd tiek atbalst\u012bts imports bez testiem, tom\u0113r n\u0101kotn\u0113 m\u0113s neizsl\u0113dzam ar\u012b to atbalstu.<\/p>\n<p><\/p>\n<h1 id=\"plany\">Pl\u0101ni<\/h1>\n<p><\/p>\n<p>Ceru, da daudzu no tiem, kas izlas\u012bja l\u012bdz \u0161im br\u012bdim, patika m\u016bsu produkts. Tom\u0113r tas v\u0113l nav viss! Darbs pie produkta notiek piln\u0101 spar\u0101, un l\u016bk, da\u017eas iez\u012bmes, kuras m\u0113s pl\u0101nojam pievienot dr\u012bzum\u0101.<\/p>\n<p><\/p>\n<h2 id=\"oblachnaya-sinhronizaciya\">M\u0101ko\u0146a sinhroniz\u0101cija<\/h2>\n<p><\/p>\n<p>Viens no visvair\u0101k piepras\u012btajiem funkcij\u0101m. \u0160obr\u012bd m\u0113s pied\u0101v\u0101jam izmantot versiju kontroli k\u0101 sinhroniz\u0101cijas risin\u0101jumu, t\u0101p\u0113c m\u0113s veidojam form\u0101tu draudz\u012bg\u0101ku \u0161\u0101da veida glab\u0101\u0161anai. Tom\u0113r ne visiem \u0161\u0101ds darba pl\u016bsmas modelis ir piem\u0113rots, t\u0101p\u0113c pl\u0101nots pievienot ierasto sinhroniz\u0101cijas meh\u0101nismu caur m\u016bsu serveriem. <\/p>\n<p><\/p>\n<h2 id=\"cli\">flags -k integr\u0101cijai ar<\/h2>\n<p><\/p>\n<p>K\u0101 jau min\u0113ts iepriek\u0161, IDE l\u012bme\u0146a produkti neiztiek bez da\u017e\u0101d\u0101m integr\u0101cij\u0101m ar jau eso\u0161\u0101m lietojumprogramm\u0101m vai darba pl\u016bsm\u0101m. CLI ir tie\u0161i nepiecie\u0161ams, lai integr\u0113tu testus, kas rakst\u012bti TestMace, turpm\u0101kaj\u0101 nep\u0101rtraukt\u0101s integr\u0101cijas proces\u0101. Darbs pie CLI notiek piln\u0101 spar\u0101, agr\u012bn\u0101s versij\u0101s tiks pieejams projekts ar vienk\u0101r\u0161u konsoles reportu. N\u0101kotn\u0113 pl\u0101nots pievienot zi\u0146ojuma izvadi JUnit form\u0101t\u0101.<\/p>\n<p><\/p>\n<h2 id=\"plaginnaya-sistema\">Papla\u0161in\u0101mais sist\u0113ma<\/h2>\n<p><\/p>\n<p>Neskatoties uz m\u016bsu instrumenta jaudu, gad\u012bjumu komplekts, kas prasa risin\u0101jumus, ir neierobe\u017eots. Galu gal\u0101 ir uzdevumi, kas ir specifiski noteiktam projektam. Tie\u0161i t\u0101p\u0113c m\u0113s pl\u0101nojam pievienot SDK pluginu izstr\u0101dei, \u013caujot katram izstr\u0101d\u0101t\u0101jam pievienot funkcionalit\u0101ti p\u0113c saviem ieskatiem.<\/p>\n<p><\/p>\n<h2 id=\"rasshirenie-assortimenta-tipov-uzlov\">Uzskait\u0101mo mezglu veidu papla\u0161in\u0101\u0161ana<\/h2>\n<p><\/p>\n<p>\u0160is mezglu komplekts nep\u0101rkl\u0101j visus gad\u012bjumus, kas ir nepiecie\u0161ami lietot\u0101jam. Mezgli, kurus pl\u0101nots pievienot:<\/p>\n<p><\/p>\n<ul>\n<li>Script mezgls \u2014 p\u0101rv\u0113r\u0161 un izvieto datus, izmantojot js un atbilsto\u0161o API. Izmantojot \u0161\u0101da veida mezglu, var realiz\u0113t lietas, piem\u0113ram, pre-request un post-request skriptus Postman.<\/li>\n<li>GraphQL mezgls \u2014 GraphQL atbalsts<\/li>\n<li>Custom assertion mezgls \u2014 \u013caus papla\u0161in\u0101t eso\u0161o assertion komplektu projekt\u0101.<br \/>\nDabiski, tas nav gal\u012bgais saraksts, tas past\u0101v\u012bgi tiks papildin\u0101ts ar\u012b, \u0146emot v\u0113r\u0101 j\u016bsu atsauksmes.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"faq\">BUJ<\/h1>\n<p><\/p>\n<p><strong>K\u0101 j\u016bs at\u0161\u0137iraties no Postman?<\/strong><\/p>\n<p><\/p>\n<ol>\n<li>Mezglu koncepcija, kas \u013cauj praktiski bezgal\u012bgi papla\u0161in\u0101t projekta funkcionalit\u0101ti<\/li>\n<li>Cilv\u0113ka las\u0101mais projekta form\u0101ts ar t\u0101 saglab\u0101\u0161anu failu sist\u0113m\u0101, kas vienk\u0101r\u0161o darbu ar versiju kontroles sist\u0113m\u0101m.<\/li>\n<li>Iesp\u0113ja veidot testus bez programm\u0113\u0161anas un uzlabota js atbalsta nodro\u0161in\u0101\u0161ana testu redaktor\u0101 (autom\u0101tiska pabeig\u0161ana, statisks analizators)<\/li>\n<li>Iev\u0113rojama autom\u0101tisk\u0101 pabeig\u0161ana un pa\u0161reiz\u0113jo main\u012bgo v\u0113rt\u012bbu izgaismo\u0161ana<\/li>\n<\/ol>\n<p><\/p>\n<p><strong>Vai tas ir open-source produkts?<\/strong><\/p>\n<p><\/p>\n<p>N\u0113, pa\u0161laik avota kodi ir sl\u0113gti, ta\u010du n\u0101kotn\u0113 m\u0113s apsveram iesp\u0113ju tos atv\u0113rt.<\/p>\n<p><\/p>\n<p><strong>Uz k\u0101 j\u016bs dz\u012bvojat?)<\/strong><\/p>\n<p><\/p>\n<p>Kop\u0101 ar bezmaksas versiju m\u0113s pl\u0101nojam izlaist maksas produkta versiju. Taj\u0101 vispirms iek\u013causim funkcijas, kas prasa servera pusi, piem\u0113ram, sinhroniz\u0101ciju.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Secin\u0101jums<\/h1>\n<p><\/p>\n<p>M\u016bsu projekts strauji tuvojas stabilai versijai. Tom\u0113r jau tagad produktu var izmantot, un m\u016bsu agr\u012bno lietot\u0101ju pozit\u012bv\u0101s atsauksmes to apstiprina. M\u0113s akt\u012bvi v\u0101kam atsauksmes, jo bez cie\u0161as sadarb\u012bbas ar kopienu nav iesp\u0113jams izstr\u0101d\u0101t labu r\u012bku. M\u016bs var atrast \u0161eit:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">Ofici\u0101l\u0101 m\u0101jas lapa<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/testmace\">Telegram<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/testmaceslackin.herokuapp.com\">Slack<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.facebook.com\/testmace\">Facebook<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/TestMace-issues\">Issues-tracker<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Gaida j\u016bsu v\u0113lmes un priek\u0161likumus ar nepaciet\u012bbu!<\/p>\n<p>Avots: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u043d\u0430\u0441 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435\u043e\u0431\u044a\u0435\u043c\u043b\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u0434\u043e\u0441\u0430\u0434\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a. \u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u0442\u043e\u0433\u043e \u043a\u0430\u043a, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0442\u0430\u043a\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u0438 \u0440\u0435\u0448\u0438\u043b\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54187","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/lv\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47TestMace \u2014 \u043c\u043e\u0449\u043d\u0430\u044f IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/lv\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:10+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47TestMace \u2014 jaud\u012bga IDE darbam ar API | ProHoster","description":"Sveiki visiem! \u0160odien m\u0113s v\u0113lamies iepaz\u012bstin\u0101t IT kopienu ar m\u016bsu produktu \u2014 IDE, lai str\u0101d\u0101tu ar API TestMace.","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47TestMace \u2014 \u043c\u043e\u0449\u043d\u0430\u044f IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.","og:url":"https:\/\/prohoster.info\/lv\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54187","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:21:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:33","updated":"2026-01-24 10:21:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/54187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=54187"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/54187\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=54187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=54187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=54187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}