{"id":38022,"date":"2019-10-31T22:21:14","date_gmt":"2019-10-31T19:21:14","guid":{"rendered":"https:\/\/prohoster.info\/blog\/tak-vse-taki-raml-ili-oas-swagger\/"},"modified":"2019-10-31T22:21:14","modified_gmt":"2019-10-31T19:21:14","slug":"tak-vse-taki-raml-ili-oas-swagger","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger","title":{"rendered":"Nii et kas RAML v\u00f5i OAS (Swagger)?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>D\u00fcnaamilises mikroteenuste maailmas v\u00f5ib k\u00f5ik muutuda \u2014 iga komponent v\u00f5ib olla \u00fcmber kirjutatud teises keeles, kasutades erinevaid raamistikke ja arhitektuuri. Muutumatuks peavad j\u00e4\u00e4ma vaid lepingud, et mikroteenusega saaks suhelda v\u00e4ljastpoolt teatud stabiilsusel, s\u00f5ltumata sisemistest muutustest. T\u00e4na r\u00e4\u00e4gime meie valikuprobleemist lepingute kirjeldamise formaadi osas ja jagame leitud artefakte. <\/p>\n<p><img decoding=\"async\" alt=\"Nii et kas RAML v\u00f5i OAS (Swagger)?\" src=\"\/wp-content\/uploads\/2019\/09\/00864185e0f8032a304049ebf21eab21.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPostituse koostas <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/annatref\/\">Anna Melehkova<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/vlapat\/\">Vladimir Lapatin<\/a><\/noindex> <\/p>\n<p><b>Mikroteenused.<\/b> Acronis Cyber Cloud'i arendamisel m\u00f5istsime, et me ei p\u00e4\u00e4se neist. Mikroteenuse projekteerimine ei ole v\u00f5imalik ilma lepingu formaliseerimiseta, mis esindab mikroteenuse liidest.<\/p>\n<p>Kuid kui tootest leiab rohkem kui \u00fcks komponent ja lepingu arendamisest saab regulaarne tegevus, hakkad paratamatult m\u00f5tlema protsessi optimeerimisele. On ilmne, et liides (leping) ja rakendamine (mikroteenus) peavad \u00fcksteisele vastama, et erinevad komponendid teeksid samu asju \u00fchtviisi ning et ilma nende otsuste keskse vastuv\u00f5tmiseta peab iga meeskond ikka ja j\u00e4lle kulutama aega nende hankimiseks. <\/p>\n<p><img decoding=\"async\" alt=\"Nii et kas RAML v\u00f5i OAS (Swagger)?\" src=\"\/wp-content\/uploads\/2019\/09\/48048d36536f02a3a71821e7f6f32a17.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Amazonile kuuluvate mikroteenuste skeem <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/werner\/status\/741673514567143424\">twiit<\/a><\/noindex> Werner Vogels, Amazon'i CTO<\/i><br \/>\nMis on dilemmas? De facto on kaks viisi mikroteenuste suhtlemiseks \u2013 HTTP Rest ja gRPC Google'ilt. Me ei soovinud olla seotud Google'i tehnoloogiatega, seet\u00f5ttu valisime HTTP Rest'i. HTTP REST lepingute annotatsioonid on k\u00f5ige sagedamini kirjeldatud \u00fches kahest formaadist: RAML ja OAS, mis oli varem tuntud kui Swagger. Seet\u00f5ttu seisavad k\u00f5ik arendajate meeskonnad silmitsi vajadusega valida \u00fche standardi kasuks. Kuid nagu selgus, v\u00f5ib selle valiku tegemine olla v\u00e4ga keeruline.<\/p>\n<h3>Miks on annotatsioonid vajalikud?<\/h3>\n<p>\nAnnotatsioon aitab v\u00e4listel kasutajatel kiiresti m\u00f5ista, mida saavad nad teie teenusega selle HTTP-liidese kaudu teha. Selle p\u00f5hitasandi puhul peaks annotatsioon sisaldama v\u00e4hemalt loetelu saadaval olevatest ressursitest, nende HTTP-meetoditest, p\u00e4ringute kehast, parametrite loendist, n\u00f5utud ja toetatud p\u00e4istest ning ka tagastatavatest koodidest ja vastuse formaatidest. \u00c4\u00e4rmiselt oluline element lepingu annotatsioonis on nende s\u00f5naline kirjeldus (\"mis juhtub, kui lisada see query-parameeter p\u00e4ringule?\", \"millal tagastatakse kood 400?\")<\/p>\n<p>Siiski, kui asi puudutab suurte mikroteenuste arendamist, on soov soovida saada rohkem kasu kirjutatud annotatsioonidest. N\u00e4iteks RAML-i \/ Swaggeri p\u00f5hjal saab genereerida nii kliendi- kui ka serverikoodi paljusid programmeerimiskeeli. Samuti on v\u00f5imalik automaatselt luua mikroteenuse dokumentatsioon ja laadida see \u00fcles teie arendaja portaalile :).<\/p>\n<p><img decoding=\"async\" alt=\"Nii et kas RAML v\u00f5i OAS (Swagger)?\" src=\"\/wp-content\/uploads\/2019\/09\/0c71fb27949bdde82172c58d0c95c432.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Struktureeritud lepingu kirjelduse n\u00e4ide<\/i><\/p>\n<p>Harva praktika mikroteenuste testimiseks p\u00f5hineb lepingute kirjeldustel. Kui olete kirjutanud nii annotatsiooni kui ka komponendi, on v\u00f5imalik luua automaatne test, mis kontrollib teenuse toimivust erinevate andmet\u00fc\u00fcpide sisendiga. Kas teenus tagastab koodi, mida annotatsioonis ei ole kirjeldatud? Kas ta suudab korrektselt t\u00f6\u00f6delda valeandmeid?<\/p>\n<p>Lisaks v\u00f5imaldab kvaliteetne lepingute rakendamine ja annotatsioonide visualiseerimise t\u00f6\u00f6riistade arendamine h\u00f5lbustada mikroteenuste t\u00f6\u00f6d. Kui arhitekt on lepingut kvaliteetselt kirjeldanud, saavad disainerid ja arendajad selle alusel teenuse teistesse toodetesse integreerida ilma t\u00e4iendavate ajakulu.<\/p>\n<p>Lisaks on nii RAML-l kui ka OAS-il v\u00f5imalus lisada metainfot, mis ei ole standardiga ette n\u00e4htud (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/OAI\/OpenAPI-Specification\/blob\/master\/versions\/3.0.0.md#specification-extensions\">n\u00e4iteks, nii tehakse OAS-is<\/a><\/noindex>).<\/p>\n<p>Kokkuv\u00f5ttes on lepingute rakendamiseks mikroteenustes loomingulise vaba ruumi palju... v\u00e4hemalt teoreetiliselt<\/p>\n<h3>Siili ja r\u00e4stiku v\u00f5rdlemine<\/h3>\n<p>\nPraegu on Acronise arenduste peamine suund Acronis Cyber Platformi arendamine. Acronis Cyber Platform on uus koht, kus integreerida kolmandate osapoolte teenuseid Acronis Cyber Cloudiga ja agentuuriosaga. Kuigi meie sisemised API-d, mis on kirjeldatud RAML-is, olid rahuldavad, t\u00f5stis API-de avaldamise vajadus taas k\u00fcsimuse: millist annotatsioonistandardit peaksime oma t\u00f6\u00f6s kasutama?<\/p>\n<p>Alguses n\u00e4is, et lahendusi on kaks \u2014 enim levinud arendused RAML ja Swagger (v\u00f5i OAS). Kuid tegelikult selgus, et alternatiive on v\u00e4hemalt mitte 2, vaid 3 v\u00f5i rohkem.<\/p>\n<p>\u00dchest k\u00fcljest on RAML \u2014 v\u00f5imas ja efektiivne keel. Sellel on h\u00e4sti rakendatud hierarhia ja p\u00e4rand, mist\u00f5ttu sobib see formaat rohkem suurte ettev\u00f5tete jaoks, kellel on vaja palju kirjeldusi \u2014 mitte \u00fchte toodet, vaid palju mikroteenuseid, millel on \u00fchised lepingute osad \u2014 autentimisskeemid, \u00fchesugused andmet\u00fc\u00fcbid, veateated.<\/p>\n<p>Kuid RAMLi arendaja, ettev\u00f5te Mulesoft, liitus Open API konsortsiumiga, mis tegeleb arendamisega. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.google.com\/url?q=https:\/\/swagger.io\/blog\/news\/mulesoft-joins-the-open-api-initiative\/&amp;sa=D&amp;ust=1568012015646000&amp;usg=AFQjCNExaO-_GkMnfmqc_MRu6mgHYgjK-A\">Swagger<\/a><\/noindex>. Seet\u00f5ttu on RAML oma arengu peatunud. Kujutle, et Linuxi peamiste komponentide hooldajad on l\u00e4inud Microsofti t\u00f6\u00f6le. Selline olukord loob eeldused, et kasutada Swaggerit, mis areneb d\u00fcnaamiliselt ja viimases \u2014 kolmandas versioonis \u2014 j\u00f5uab RAML-iga v\u00f5rreldes paindlikkuses ja funktsionaalsuses praktiliselt samale tasemele.<\/p>\n<h3>Kuid on \u00fcks aga...<\/h3>\n<p>\nKuidas selgus, ei ole k\u00f5ik avatud l\u00e4htekoodiga t\u00f6\u00f6riistad uuendatud OAS 3.0 versioonile. Go p\u00f5histe mikroteenuste jaoks on k\u00f5ige kriitilisem kohandamise puudumine <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/go-swagger\/go-swagger\">go-swagger<\/a><\/noindex> uue standardi versiooni jaoks. Kuid erinevus Swagger 2 ja Swagger 3 vahel on <noindex><a rel=\"nofollow\" href=\"https:\/\/swagger.io\/blog\/news\/whats-new-in-openapi-3-0\/\">hiiglaslik<\/a><\/noindex>. N\u00e4iteks kolmandas versioonis on arendajad:<\/p>\n<ul>\n<li>parandanud autentimise skeemide kirjeldust<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/swagger-api\/swagger-ui\/issues\/4819#issuecomment-413890929\">l\u00f5petanud<\/a><\/noindex> JSON Schema toe<\/li>\n<li>parandanud n\u00e4idiste lisamise v\u00f5imalust<\/li>\n<\/ul>\n<p>\nSituatsioon on l\u00f5bus: standardi valimisel tuleks RAML-i, Swagger 2 ja Swagger 3 k\u00e4sitleda eraldi alternatiividena. Ainult Swagger 2-l on hea OpenSource t\u00f6\u00f6riistade tugi. RAML on v\u00e4ga paindlik... ja keeruline, samas kui Swagger 3-l on n\u00f5rk toetav kogukond, mist\u00f5ttu peate kasutama isejuhitavaid v\u00f5i kommertslahendusi, mis tavaliselt on \u00fcsna kallid. <\/p>\n<p>Kuid Swagger pakub mitmeid meeldivaid v\u00f5imalusi, nagu valmisportaal. <noindex><a rel=\"nofollow\" href=\"https:\/\/editor.swagger.io\">editor.swagger.io<\/a><\/noindex>, kuhu saab laadida annotatsiooni ja saada selle visualiseerimise koos detailse kirjelduse, linkide ja seostega, siis RAML-i puhul sellist v\u00f5imalust ei ole. Jah, v\u00f5ib uurida projekte GitHub-is, leida sealt analooge ja need ise \u00fcles seada. Kuid igal juhul peab keegi portaalist hoolitsema, mis ei ole algtaseme kasutamiseks v\u00f5i testivajaduste jaoks mugav. Lisaks on swagger rohkem \"printsipiaalne\", v\u00f5i siis liberaalne \u2014 seda saab genereerida koodikommentaaridest, mis muidugi on vastuolus API esitluse p\u00f5him\u00f5ttega ja ei saa RAML-i t\u00f6\u00f6riistade poolt toetust.<\/p>\n<p>Oleme kunagi alustanud RAML-iga kui paindlikuma keelega, ja l\u00f5puks pidime palju ise tegema. N\u00e4iteks kasutatakse \u00fches projektis t\u00f6\u00f6riista <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/spotify\/ramlfications\">ramlfications<\/a><\/noindex> \u00fcksustes, mis toetab ainult RAML 0.8. Seega pidime lisama tugistruktuure, et t\u00f6\u00f6riist saaks \"seedida\" RAML versiooni 1.0.<\/p>\n<h3>Kas on vaja valida?<\/h3>\n<p>\nOlles uurinud lahenduste \u00f6kos\u00fcsteemi t\u00e4iendamist RAML-i kaudu, oleme j\u00f5udnud arusaamisele, et peame RAML-i konverteerima Swagger 2-sse, et teostada kogu automatiseerimine, valideerimine, testimine ja edasine optimeerimine just seal. See on suurep\u00e4rane viis kasutada nii RAML-i paindlikkust kui ka Swaggeri kogukonna t\u00f6\u00f6riistade tuge. <\/p>\n<p>Selle probleemi lahendamiseks on olemas kaks avatud l\u00e4htekoodiga t\u00f6\u00f6riista, mis peaksid tagama lepingute konverteerimise:<\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mulesoft\/oas-raml-converter\">oas-raml-converter<\/a><\/noindex> \u2013 praegu mitte toetatud utiliit. T\u00f6\u00f6tades sellega, avastasime, et tal on mitmeid probleeme keeruliste RAML-idega, mis on \u201cjaotatud\u201d suure hulga failide vahel. See programm on kirjutatud JavaScriptis ja teostab rekursiivset l\u00e4bit\u00f6\u00f6tamist s\u00fcntakspuu kaudu. D\u00fcnaamilise t\u00fcpiseerimise t\u00f5ttu on selles koodis orienteerumine keeruline, seega otsustasime mitte raisata aega sureva utiliidi patch'ide kirjutamisele.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/raml-org\/webapi-parser\">webapi-parser<\/a><\/noindex> \u2014 sama ettev\u00f5tte t\u00f6\u00f6riist, mis v\u00e4idab, et suudab konverteerida k\u00f5ike ja igal pool, ning igas suunas. T\u00e4na on lubatud tugi RAML 0.8-le, RAML 1.0-le ja Swagger 2.0-le. Kuid meie uurimise ajal oli utiliit j\u00f5udnud veel <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/aml-org\/amf\/issues\/517\">\u00c4\u00c4RMISE<\/a><\/noindex> toores ja kasutamiseks k\u00f5lbmatu. Arendajad loovad teatud t\u00fc\u00fcpi <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Intermediate_representation\">IR<\/a><\/noindex>, mis v\u00f5imaldab neil tulevikus kiiresti uusi standardsid lisada. Kuid seni see k\u00f5ik lihtsalt ei t\u00f6\u00f6ta.<\/li>\n<\/ol>\n<p>\nJa see pole veel k\u00f5ik raskused, millega me silmitsi seisame. \u00dcks meie t\u00f6\u00f6voo samme on kontrollida, et RAML hoiab, mis on allkastis vastavuses spetsifikatsiooniga. Proovisime mitmeid t\u00f6\u00f6riistu. \u00dcllatavalt, aga k\u00f5ik nad kritiseerisid meie annotatsioone erinevates kohtades ja t\u00e4iesti erinevate halvas\u00f5nadega. Ja mitte alati \u00f5igustatult :).<\/p>\n<p>L\u00f5puks j\u00e4ime vananenud projekti juurde, millel on mitmeid probleeme (m\u00f5nikord langeb t\u00fchjast kohast, tekib probleeme regulaarsete avaldiste kasutamisel). Seega ei leidnud me tasuta t\u00f6\u00f6riistade p\u00f5hjal valideerimise ja konverteerimise \u00fclesannete lahendamisel head lahendust ning otsustasime kasutada \u00e4rilahendust. Tulevikus, kui OpenSource vahendid arenevad edasi, v\u00f5ib selle \u00fclesande lahendamine muutuda lihtsamaks. Seni tundusid meelespea l\u00f5puleviimise t\u00f6\u00f6- ja ajakulud olulisemad kui kommertsteenuse hind.<\/p>\n<h3>Kokkuv\u00f5te<\/h3>\n<p>\nKogu selle jutu juures soovime jagada oma kogemust ja r\u00f5hutada, et lepingute kirjeldamiseks vajaliku t\u00f6\u00f6riista valimisel on oluline selgelt m\u00e4\u00e4ratleda, mida te sellelt soovite, ja milline eelarve teil on. Kui unustada avatud l\u00e4htekood, on juba praegu saadaval suur hulk teenuseid ja tooteid, mis aitavad kontrollida, konverteerida ja valideerida. Need aga on kallid, m\u00f5nikord isegi v\u00e4ga kallid. Suure ettev\u00f5tte jaoks on sellised kulud talutavad, kuid idufirmale v\u00f5ivad need olla suur koormus.<\/p>\n<p>M\u00e4\u00e4ratlege t\u00f6\u00f6riistade komplekt, mida kavatsete hiljem kasutada. N\u00e4iteks kui peate lihtsalt lepingut kuvama, siis on lihtsam kasutada Swagger 2, millel on ilus API, sest RAML-i puhul peate teenuse ise \u00fcles seadma ja hooldama.<br \/>\nMida rohkem teil on \u00fclesandeid, seda laiem on vajadus t\u00f6\u00f6riistade j\u00e4rele, ja need on erinevad erinevate platvormide jaoks. Seet\u00f5ttu on parem tutvuda olemasolevate versioonidega, et teha valik, mis minimeerib teie tulevased kulud.<\/p>\n<p>Tuleb tunnistada, et k\u00f5ik olemasolevad \u00f6kos\u00fcsteemid on t\u00e4iuslikud. Seet\u00f5ttu, kui ettev\u00f5ttes on f\u00e4nne, kes armastavad t\u00f6\u00f6tada RAML-is, kuna \"see v\u00f5imaldab m\u00f5tteid paindlikumalt v\u00e4ljendada\", v\u00f5i vastupidi, eelistavad Swaggerit, kuna \"see on arusaadavam\", on k\u00f5ige parem j\u00e4tta nad t\u00f6\u00f6tama selles, milles nad on harjunud ja soovivad, kuna igasuguste formaatide t\u00f6\u00f6riistad vajavad lihvimist. <\/p>\n<p>Mis puutub meie kogemusse, siis j\u00e4rgmistes postitustes r\u00e4\u00e4gime sellest, milliseid - staatilisi ja d\u00fcnaamilisi kontrollimisi teeme meie RAML-Swagger arhitektuuri p\u00f5hjal, samuti sellest, millist dokumentatsiooni genereerime lepingutest ning kuidas see k\u00f5ik t\u00f6\u00f6tab.<\/p>\n<p class=\"for_users_only_msg\">Ainult registreeritud kasutajad saavad k\u00fcsitluses osaleda. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Logige sisse<\/a><\/noindex>, palun.<\/p>\n<h2 class=\"default-block__polling-title\">Millist keelt kasutate mikroteenuste lepingute annotatsioonide jaoks?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    RAML 0.8<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    RAML 1.0<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Swagger 2<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    OAS3 (ehk )<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Blueprint<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Muu<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ei kasuta<\/p>\n<\/li>\n<\/ul>\n<p>    H\u00e4\u00e4letas 100 kasutajat. 24 kasutasid kokkuhoidu.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/acronis\/blog\/466691\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u2014 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443. \u041d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u0438\u0448\u044c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u0432\u043d\u0435 \u043d\u0430 \u043d\u0435\u043a\u043e\u0439 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043c\u0435\u0442\u0430\u043c\u043e\u0440\u0444\u043e\u0437. \u0418 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043e \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28540,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38022","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.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u2014 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443. \u041d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u0438\u0448\u044c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u0432\u043d\u0435 \u043d\u0430 \u043d\u0435\u043a\u043e\u0439 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043c\u0435\u0442\u0430\u043c\u043e\u0440\u0444\u043e\u0437. \u0418 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043e \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\" \/>\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\/tak-vse-taki-raml-ili-oas-swagger\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.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\udd47\u0422\u0430\u043a \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 RAML \u0438\u043b\u0438 OAS (Swagger)? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u2014 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443. \u041d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u0438\u0448\u044c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u0432\u043d\u0435 \u043d\u0430 \u043d\u0435\u043a\u043e\u0439 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043c\u0435\u0442\u0430\u043c\u043e\u0440\u0444\u043e\u0437. \u0418 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043e \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger\" \/>\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-10-31T19:21:14+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:21:14+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\udd47Nii kas RAML v\u00f5i OAS (Swagger)? | ProHoster","description":"D\u00fcnaamilises mikroteenuste maailmas v\u00f5ib k\u00f5ik kiiresti muutuda \u2014 \u00fckski komponent ei ole kaitstud: seda v\u00f5ib \u00fcles ehitada teises keeles, kasutades erinevaid raamistikke ja arhitektuure. Ainsad asjad, mis peavad j\u00e4\u00e4ma muutumatuks, on lepingud, et mikroteenusega saaks pidevalt ja stabiilselt suhelda, hoolimata sisemistest muudatustest. T\u00e4na r\u00e4\u00e4gime meie muret tekitavast formaadi valikust.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger","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\udd47\u0422\u0430\u043a \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 RAML \u0438\u043b\u0438 OAS (Swagger)? | ProHoster","og:description":"\u0412 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u2014 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443. \u041d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u0438\u0448\u044c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u0432\u043d\u0435 \u043d\u0430 \u043d\u0435\u043a\u043e\u0439 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043c\u0435\u0442\u0430\u043c\u043e\u0440\u0444\u043e\u0437. \u0418 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043e \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger","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-10-31T19:21:14+00:00","article:modified_time":"2019-10-31T19:21:14+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38022","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-23 20:09:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:43:20","updated":"2026-01-23 20:09:19","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\/38022","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=38022"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/38022\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/28540"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=38022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=38022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=38022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}