{"id":92433,"date":"2020-08-27T07:42:01","date_gmt":"2020-08-27T05:42:01","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda"},"modified":"2020-08-27T07:42:01","modified_gmt":"2020-08-27T05:42:01","slug":"viennanet-nabor-bibliotek-dlya-backenda","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda","title":{"rendered":"ViennaNET: raamatukogude kogum backend\u2019ile","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere k\u00f5igile!<\/p>\n<p><\/p>\n<p>Me oleme .NET-arendajate kogukond Raiffeisenbankist ja tahame r\u00e4\u00e4kida .NET Core'i infrastruktuuriraamatukogudest, mis v\u00f5imaldavad kiiresti luua mikroteenuseid \u00fches ekos\u00fcsteemis. Oleme selle viinud avatud l\u00e4htekoodiga! <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/494830\/\"><img decoding=\"async\" alt=\"ViennaNET: raamatukogude kogum backend\u2019ile\" src=\"\/wp-content\/uploads\/2020\/08\/eb063b3083da2c39f7f3c40a560c30ab.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Enne kui liigume edasi<\/h3>\n<p><\/p>\n<p>Kusagil oli meil suur monoliitne projekt, mis muutus j\u00e4rk-j\u00e4rgult mikroteenuste kogumiks (selle protsessi kohta saab lugeda <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/458404\/\">selles artiklis<\/a><\/noindex>). Protsessi k\u00e4igus kohtasime probleemi, et uute mikroteenuste loomisel pidime sageli kopeerima erinevaid infrastruktuuri lahendusi \u2013 nagu logimise seadistamine, andmebaasi kasutamine, WCF jne. Selle projekti kallal t\u00f6\u00f6tas \u00fcks meeskond ja k\u00f5ik olid harjunud teatud kindla l\u00e4henemisega infrastruktuuri loomisel. Seet\u00f5ttu eraldasime \u00fchise koodi eraldi repositooriumisse, kokku pandud raamatukogud pakkisime Nuget-pakettideks ja paigutasime meie sisemisse Nuget-hoidlasse.<\/p>\n<p><\/p>\n<p>Aeg m\u00f6\u00f6dus, projekt puhkes mitmeks osaks, tekkis soov luua uusi kliendipoolseid mooduleid kaasaegses Js-raamistikus ja k\u00e4ivitada neid brauseris. Me alustasime \u00fcleminekut WCF\/SOAP-ist REST\/HTTP-le, seet\u00f5ttu vajasime uusi raamatukogusid, et kiiresti k\u00e4ivitada teenuseid AspNet WebApi baasil. Esimene versioon .Net Framework 4.5-lt tehti meie arhitekti poolt peaaegu vahepeal vabal ajal, kuid see v\u00f5imaldas juba kastist v\u00e4lja kolmes reas Program.cs-s k\u00e4ivitada teenust, mis sisaldas autoriseerimist (NTLM), logimist, Swaggerit, IoC\/DI Castle Windsor baasil, seadistatud HTTP-kliente, mis edastasid erinevaid p\u00e4iseid, et tagada \u00fchtne logimine kogu projektis. Ja k\u00f5ik see oli v\u00f5imalik ka lisakorraldamiseks teenuse konfiguratsioonifailis.<\/p>\n<p><\/p>\n<p>Kuid k\u00f5ik ei kulgenud sujuvalt: see raamatukogu osutus uute moodulite sisestamise osas \u00e4\u00e4rmiselt j\u00e4igaks. N\u00e4iteks, kui oli vaja lisada m\u00f5ni eriline middleware, tuli luua uus kogumik ja p\u00e4rida teenust k\u00e4ivitavast baasklassist, mis oli \u00e4\u00e4rmiselt ebamugav. \u00d5nneks selliseid juhtumeid ei olnud liiga palju.<\/p>\n<p><\/p>\n<h3>Docker ja Kubernetes ajastu<\/h3>\n<p><\/p>\n<p>On j\u00f5udnud aeg, mil ka meie juurde on j\u00f5udnud Docker ja Kubernetes, mida oleme t\u00e4helepanelikult j\u00e4lginud: see oli suurep\u00e4rane v\u00f5imalus liikuda edasi tehnoloogiatega, .Net Core'i suunas. Seega vajame uut infrastruktuuri teenuste k\u00e4ivitamiseks: osa raamatukogusid on \u00fcle viidud .Net Frameworkilt .Net Standard'ile ja .Net Core'ile peaaegu muutumatuna, osa v\u00e4ikeste t\u00e4iustustega. Aga k\u00f5ige rohkem soovime \u00fcmber t\u00f6\u00f6tada AspNet Core'i teenuste k\u00e4ivitamisega seotud funktsionaalsust.<\/p>\n<p><\/p>\n<p>Esimese asjana kaaluti kontsepti, mis k\u00f5rvaldab eelmise versiooni peamise puuduse: paindlikkuse puudumise. Seet\u00f5ttu otsustati muuta kogu raamatukogude s\u00fcsteem v\u00f5imalikult s\u00f5ltumatuks ja modulaarseks ning koguda vajalikud teenused funktsionaalsuse j\u00e4rgi nagu konstruktori ehitamisel.<\/p>\n<p><\/p>\n<p>Peamine eesm\u00e4rk on luua \u00fchtne l\u00e4henemine, mis kirjeldab, kuidas suhelda andmebaaside, busside ja teiste teenustega. P\u00fc\u00fcdsime, et integreerimine oleks kiire ja valutuks ning arendajad saaksid keskenduda \u00e4ri loogika kirjutamisele, mitte infrastruktuurile - see on juba valmis. \u00dchine repodeerimine aitab parandada koost\u00f6\u00f6kogemust meeskondade vahel: kui kasutatakse v\u00e4ga sarnaseid sisemisi infrastruktuure, on lihtsam muuta teiste meeskondade arendusse ja jagada oma teadmisi.<\/p>\n<p><\/p>\n<h3>Miks me vajame Open Source'i?<\/h3>\n<p><\/p>\n<p>Soovime n\u00e4idata oma ekspertiisi k\u00fcpsust ja saada kvaliteetset tagasisidet: inimene, kes on v\u00e4ljaspool pankade s\u00fcsteemi, suudab tuua midagi uut. Meid huvitab ka praktika arendamine mikroteenuste ja DDD osas .NET-is t\u00f6\u00f6stuses, v\u00f5ib-olla tahab keegi osa raamistiku osade enda juurde v\u00f5tta. <\/p>\n<p><\/p>\n<h3>Oma osa on ViennaNET<\/h3>\n<p><\/p>\n<p>N\u00fc\u00fcd vaatame k\u00f5ike l\u00e4hemalt. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Raiffeisen-DGTL\/ViennaNET\">T\u00e4ielik l\u00e4htekood on siin<\/a><\/noindex>. <\/p>\n<p><\/p>\n<h4>ViennaNET.WebApi.*<\/h4>\n<p><\/p>\n<p>See raamatukogude komplekt koosneb 'juurest' ViennaNET.WebApi, mis sisaldab CompanyHostBuilder teenuse konstruktorit, ja hulgast konfiguratoritest ViennaNET.WebApi.Configurators.*, millest iga\u00fcks v\u00f5imaldab lisada ja konfigureerida teatud funktsionaalsust loodud teenuses. Konfiguratorite seast v\u00f5ib leida logimise, diagnostika, autentimise ja autoriseerimise t\u00fc\u00fcpe, swaggerit jms.<\/p>\n<p><\/p>\n<p>Siin ViennaNET.WebApi.Runners.* sisaldab eelnevalt seadistatud teenuste ehitajaid. Need paketid v\u00f5imaldavad igakordse uue teenuse loomisel meeles pidada, millised konfigureerijad tuleb \u00fchendada. Samas ei piira need teenuste ehitajate funktsionaalsust.<\/p>\n<p><\/p>\n<h4>ViennaNET.Mediator.*<\/h4>\n<p><\/p>\n<p>Raamatukogud, mis v\u00f5imaldavad luua sisemise vahesilla k\u00e4sud ja p\u00e4ringud teenuse sees. Selline l\u00e4henemine v\u00e4hendab DI-s\u00fcstimist n\u00e4iteks kontrollerites \u00fche juhul. Seda saab teha erinevate dekoratorite lisamisega p\u00e4ringutele, mis \u00fchtlustab nende t\u00f6\u00f6tlemist ja v\u00e4hendab koodi hulka. <\/p>\n<p><\/p>\n<h4>ViennaNET.Validation<\/h4>\n<p><\/p>\n<p>Kogum, mis sisaldab klasside komplekti valideerimisreeglite ja nende j\u00e4rjestuste loomiseks. V\u00e4ga mugav domaaniv\u00e4\u00e4rtingute rakendamiseks, kuna see v\u00f5imaldab iga \u00e4rijoont kirjeldada lihtsa ja eraldi reegliga. <\/p>\n<p><\/p>\n<h4>ViennaNET.Redis<\/h4>\n<p><\/p>\n<p>Raamatukogu Redisiga mugavaks t\u00f6\u00f6tamiseks m\u00e4lu kohandajana.<\/p>\n<p><\/p>\n<h4>ViennaNET.Specifications<\/h4>\n<p><\/p>\n<p>Kogum, mis sisaldab klasside komplekti, mis rakendavad 'Spetsifikatsiooni' mustrit.<\/p>\n<p><\/p>\n<p>See pole kaugeltki k\u00f5ik, mis meie komplektis on. \u00dclej\u00e4\u00e4nut saab vaadata <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Raiffeisen-DGTL\/ViennaNET\">GitHubi hoidlast<\/a><\/noindex>. Peagi on plaanis avaldada meie andmebaaside t\u00f6\u00f6ks m\u00f5eldud raamatukogusid avatud l\u00e4htekoodina.<\/p>\n<p><\/p>\n<p>Ait\u00e4h t\u00e4helepanu eest, ootame teie kommentaare ja pull request\u2019e.<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/494830\/\">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! \u041c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0420\u0430\u0439\u0444\u0444\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u043d\u043a\u0430 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 .NET Core \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0435\u0434\u0438\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u0412\u044b\u0432\u0435\u043b\u0438 \u0435\u0433\u043e \u0432 Open Source! \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u0432 \u043d\u0430\u0431\u043e\u0440 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (\u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435). \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92434,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92433","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0420\u0430\u0439\u0444\u0444\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u043d\u043a\u0430 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 .NET Core \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0435\u0434\u0438\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.\" \/>\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\/et\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\udd47ViennaNET: \u043d\u0430\u0431\u043e\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f backend\u2019\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0420\u0430\u0439\u0444\u0444\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u043d\u043a\u0430 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 .NET Core \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0435\u0434\u0438\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda\" \/>\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=\"2020-08-27T05:42:01+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-27T05:42:01+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\udd47ViennaNET: raamatukogude komplekt backend'ile | ProHoster","description":"Tere k\u00f5igile! Me oleme .NET arendajate kogukond Raiffeisen Bankis ja soovime r\u00e4\u00e4kida .NET Core'i infrastruktuuri raamatukogude komplektist kiireks mikroteenuste loomisega \u00fchtse \u00f6kos\u00fcsteemiga.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\udd47ViennaNET: \u043d\u0430\u0431\u043e\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f backend\u2019\u0430 | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0420\u0430\u0439\u0444\u0444\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u043d\u043a\u0430 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 .NET Core \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0435\u0434\u0438\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda","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":"2020-08-27T05:42:01+00:00","article:modified_time":"2020-08-27T05:42:01+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92433","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:08:24","updated":"2022-10-03 07:52:44","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/92433","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=92433"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/92433\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/92434"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=92433"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=92433"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=92433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}