{"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":"Kas siiski RAML v\u00f5i OAS (Swagger)?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>D\u00fcnaamilises mikros\u00fcsteemide maailmas v\u00f5ib k\u00f5ik muutuda \u2014 iga komponent v\u00f5ib olla kirjutatud teises keeles, kasutades teisi raamistikke ja arhet\u00fc\u00fcpe. Ainsateks muutumatuks j\u00e4\u00e4vateks elementideks peavad olema lepingud, et oleks v\u00f5imalik mikros\u00fcsteemiga suhelda v\u00e4ljaspool setkust kindlal alusel, olenemata sisemistest metamorfoosidest. T\u00e4na r\u00e4\u00e4gime oma probleemist lepingute kirjeldamise formaadi valimisel ja jagame leitud artefakte. <\/p>\n<p><img decoding=\"async\" alt=\"Kas siiski 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 Melekova<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/vlapat\/\">Vladimir Lapatin<\/a><\/noindex> <\/p>\n<p><b>Mikros\u00fcsteemid.<\/b> Acronis Cyber Cloud'i arendamisel m\u00f5istsime, et me ei saa neist m\u00f6\u00f6da minna. Ja mikros\u00fcsteemi projekteerimine on v\u00f5imatu ilma lepingu formaliseerimiseta, mis on mikros\u00fcsteemi liides.<\/p>\n<p>Kuid kui toote sees on rohkem kui \u00fcks komponent ning lepingu arendamine muutub regulaarseks tegevuseks, hakkad automaatselt m\u00f5tlema protsessi optimeerimisele. On ilmne, et liides (leping) ja rakendus (mikros\u00fcsteem) peavad \u00fcksteisele vastama, et erinevad komponendid peaksid tegema samu asju samal moel, ja et ilma k\u00f5igi nende otsuste keskse vastuv\u00f5tu korral peab iga meeskond taas ja taas aega kulutama nende saamiseks. <\/p>\n<p><img decoding=\"async\" alt=\"Kas siiski RAML v\u00f5i OAS (Swagger)?\" src=\"\/wp-content\/uploads\/2019\/09\/48048d36536f02a3a71821e7f6f32a17.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Amazon'i mikros\u00fcsteemide skeem <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/werner\/status\/741673514567143424\">tweet<\/a><\/noindex> Werner Vogels, Amazon'i CTO<\/i><br \/>\nKus seisneb dilemma? De facto on mikros\u00fcsteemide suhtlemiseks kaks viisi \u2013 HTTP Rest ja Google'i gRPC. Soovimata sattuda Google'i tehnoloogiakuhja, valisime HTTP Rest. HTTP REST lepingute annotatsioonid kirjeldatakse k\u00f5ige sagedamini kahes formaadis: RAML ja OAS, varem tuntud kui Swagger. Seega seisab iga arendajate meeskond silmitsi vajadusega valida \u00fche standardi kasuks. Kuid, nagu selgus, v\u00f5ib see valik olla v\u00e4ga keeruline.<\/p>\n<h3>Miks on annotatsioonid vajalikud?<\/h3>\n<p>\nAnnotatsioon on vajalik, et v\u00e4line kasutaja saaks h\u00f5lpsasti aru, mida saab teie teenusega teha l\u00e4bi selle HTTP-liidese. See t\u00e4hendab, et alusel peab annotatsioon sisaldama v\u00e4hemalt loetelu saadaval olevatest ressurssidest, nende HTTP-meetoditest, p\u00e4ringu kehadest, parameetrite loendist, n\u00f5utud ja toetatavate pealkirjade m\u00e4\u00e4ratlemisest, samuti tagastuskoode ja vastuse vormate. \u00c4\u00e4rmiselt oluline on ka lepingute annotatsioonide s\u00f5naline kirjeldus (\"mida juhtub, kui lisada see p\u00e4ringu parameeter?\", \"millisel juhul tagastatakse kood 400?\")<\/p>\n<p>Kuid kui r\u00e4\u00e4kida suure hulga mikroteenuste arendamisest, tahaks lisaks tuua ka rohkem kasu kirjutatud annotatsioonidest. N\u00e4iteks RAML\/Swaggeri alusel saab genereerida nii kliendi- kui serverikoodi paljudes programmeerimiskeeltes. Samuti on v\u00f5imalik automaatselt saada mikroteenuse dokumentatsiooni ja laadida see teie arendaja portaalile : ).<\/p>\n<p><img decoding=\"async\" alt=\"Kas siiski RAML v\u00f5i OAS (Swagger)?\" src=\"\/wp-content\/uploads\/2019\/09\/0c71fb27949bdde82172c58d0c95c432.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Struktureeritud lepingute kirjelduse n\u00e4ide<\/i><\/p>\n<p>Harvemini on praktika testida mikroteenuseid lepingute kirjelduste p\u00f5hjal. Kui olete kirjutanud nii annotatsiooni kui ka komponendi, on v\u00f5imalik luua automaatne test, mis kontrollib teenuse t\u00f6\u00f6 sobivust erinevate t\u00fc\u00fcpi andmete sisenemisel. Kas teenus tagastab vastuskoodi, mida annotatsioonis ei ole kirjeldatud? Kas see suudab \u00f5igesti t\u00f6\u00f6delda teadlikult valeid andmeid?<\/p>\n<p>Lisaks v\u00f5imaldab kvaliteetne rakendamine mitte ainult lepingute, vaid ka annotatsioonide visualiseerimise t\u00f6\u00f6riistade lihtsustamist mikroteenuste t\u00f6\u00f6s. See t\u00e4hendab, et kui arhitekt kirjeldas lepingut kvaliteetselt, saavad disainerid ja arendajad teenust teistesse toodetesse rakendada ilma t\u00e4iendavate ajakuludeta.<\/p>\n<p>T\u00f6\u00f6 jaoks t\u00e4iendavates t\u00f6\u00f6riistades v\u00f5ivad nii RAML kui OAS v\u00f5imaldada lisada metainfot, mida standard ei ennusta (<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>\u00dcldiselt on lepingute rakendamiseks mikroteenustes loovuse jaoks tohutu ruum\u2026 v\u00e4hemalt teoreetiliselt<\/p>\n<h3>Siili ja r\u00e4stiku v\u00f5rdlemine<\/h3>\n<p>\nPraegu on Acronise prioriteetne suund Acronis Cyber Platformi arendamine. Acronis Cyber Platform on uued integratsioonipunktid kolmandate osapoolte teenuste ja Acronis Cyber Cloudi ning agentuuriosade vahel. Kuigi meie sisemised API-d, mis on kirjeldatud RAML-is, on meid rahule j\u00e4tnud, t\u00f5stis vajadus API avaldamise k\u00fcsimuse: milline annotatsioonistandard oleks meie t\u00f6\u00f6 jaoks parem?<\/p>\n<p>Esialgu tundus, et lahendusi on kaks \u2014 enim levinud arendused RAML ja Swagger (v\u00f5i OAS). Kuid tegelikult selgus, et alternatiive on v\u00e4hemalt 2, vaid 3 v\u00f5i enam.<\/p>\n<p>\u00dchelt poolt on olemas RAML \u2013 v\u00f5imas ja efektiivne keel. Sellel on h\u00e4sti realiseeritud hierarhia ja p\u00e4rimine, nii et see formaat sobib paremini suurtele ettev\u00f5tetele, kellel on palju kirjeldusi \u2014 mitte \u00fcks toode, vaid palju mikroteenuseid, millel on \u00fchised lepingu osad \u2014 autentimise skeemid, samad andmet\u00fc\u00fcbid, vigade kehad.<\/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 RAMLi areng peatunud. Kujutage ette, et Linuxi peamiste komponentide hooldajad on t\u00f6\u00f6le l\u00e4inud Microsofti. Selline olukord loob eeldused Swaggeri kasutamiseks, mis areneb d\u00fcnaamiliselt ja praeguses \u2014 kolmandas versioonis \u2014 saavutab RAML-i paindlikkuse ja funktsionaalsuse.<\/p>\n<h3>Kuid on \u00fcks aga...<\/h3>\n<p>\nKuidas osutus, et kaugeltki mitte k\u00f5ik avatud l\u00e4htekoodiga utiliidid pole uuendatud versioonile OAS 3.0. Go mikroteenuste jaoks on k\u00f5ige kriitilisem OAS 3.0. standardi uus versiooniga kohandamise puudumine <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/go-swagger\/go-swagger\">go-swagger<\/a><\/noindex> . Kuid erinevus Swagger 2 ja Swagger 3 vahel on \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/swagger.io\/blog\/news\/whats-new-in-openapi-3-0\/\">hiiglaslik<\/a><\/noindex>. N\u00e4iteks kolmandas versioonis parandasid arendajad:<\/p>\n<ul>\n<li>parandasid autentimisskeemide kirjeldust<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/swagger-api\/swagger-ui\/issues\/4819#issuecomment-413890929\">l\u00f5petasid<\/a><\/noindex> JSON Schema toe<\/li>\n<li>parandasid n\u00e4idete lisamise v\u00f5imalust.<\/li>\n<\/ul>\n<p>\nOleme naljakas olukorras: standardi valimisel tuleb RAMLi, Swagger 2 ja Swagger 3 k\u00e4sitleda kui eraldi alternatiive. Samal ajal on ainult Swagger 2-le head avatud l\u00e4htekoodiga t\u00f6\u00f6riistade toetust. RAML on v\u00e4ga paindlik... ja keeruline, samas kui Swagger 3-l on n\u00f5rk toetamine kogukonna poolt, nii et peate kasutama oma arendust\u00f6\u00f6riistu v\u00f5i kommertslahendusi, mis on tavaliselt \u00fcsna kallid. <\/p>\n<p>Samas, kui Swagger pakub palju meeldivaid v\u00f5imalusi, nagu valmis portaal. <noindex><a rel=\"nofollow\" href=\"https:\/\/editor.swagger.io\">editor.swagger.io<\/a><\/noindex>, kuhu saab laadida annotatsiooni ja saada selle visualiseerimise koos \u00fcksikasjalike kirjelduse, linkide ja seostega, ei ole sellist v\u00f5imalust RAML-l, mis on rohkem fundamentaalne ja v\u00e4hem kasutajas\u00f5bralik. Jah, v\u00f5ite otsida midagi GitHubi projektide hulgast, leida sealt sarnase ja selle ise \u00fcles seada. Kuid igal juhul peab keegi portaali toetama, mis ei ole nii mugav p\u00f5hikasutuse v\u00f5i testimise vajaduste jaoks. Lisaks on swagger enam \u201eprintsiipidevaba\u201d, v\u00f5i \u00fctleme loominguline - seda saab genereerida koodis olevatest kommentaaridest, mis muidugi on vastuolus API first printsiibiga ja ei ole toetatud \u00fcheski RAML utiliidis.<\/p>\n<p>Oleme kunagi alustanud RAML-iga, kui paindliku keelega, ja l\u00f5ppkokkuv\u00f5ttes pidime palju ise tegema. N\u00e4iteks \u00fches projektis kasutatakse utiliiti <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/spotify\/ramlfications\">ramlfications<\/a><\/noindex> \u00fchiktestides, mis toetab ainult RAML 0.8. Nii tuli lisada k\u00fchveldamisi, et utiliit saaks \u201es\u00f6\u00f6da\u201d RAML versiooni 1.0.<\/p>\n<h3>Kas on vaja valida?<\/h3>\n<p>\nP\u00e4rast lahenduste \u00f6kos\u00fcsteemi RAML l\u00e4hedal siiski tulime j\u00e4reldusele, et peame konverteerima RAML Swagger 2-ks ja seej\u00e4rel teostama k\u00f5ik automatiseerimise, kontrollimise, testimise ja j\u00e4rgnevate optimeerimiste selles. See on hea viis kasutada nii RAML-i paindlikkust kui ka Swaggeri kogukonna t\u00f6\u00f6riistade toetust. <\/p>\n<p>Selle \u00fclesande lahendamiseks on olemas kaks OpenSource t\u00f6\u00f6riista, mis peaksid tagama lepingute konversiooni:<\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mulesoft\/oas-raml-converter\">oas-raml-converter<\/a><\/noindex> \u2013 praegu hooldamata utiliit. T\u00f6\u00f6 k\u00e4igus avastasime, et sellel on mitmeid probleeme keeruliste RAML-idega, mis on \u201ejaotatud\u201d suure hulga failide vahel. See programm on kirjutatud JavaScriptis ja teostab s\u00fcntaksipuu rekursiivset l\u00e4bimist. D\u00fcnaamilise t\u00fc\u00fcpimise t\u00f5ttu on selle koodiga keeruline toime tulla, nii et otsustasime mitte raisata aega sureva utiliidi plaastrite 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 k\u00f5iki, veelgi enam, igasse suunda. T\u00e4naseks on teada RAML 0.8, RAML 1.0 ja Swagger 2.0 tugi. Kuid meie uurimise hetkel oli utiliit endiselt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/aml-org\/amf\/issues\/517\">\u00c4\u00c4RMISELT<\/a><\/noindex> toores ja kasutamiseks sobimatu. Arendajad loovad oma m\u00f5nes m\u00f5ttes <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Intermediate_representation\">IR<\/a><\/noindex>, mis v\u00f5imaldab neil tulevikus kiiresti uusi standardeid lisada. Kuid seni lihtsalt ei t\u00f6\u00f6ta see.<\/li>\n<\/ol>\n<p>\nJa need ei ole k\u00f5ik raskused, millega me silmitsi seisame. \u00dcks meie protsessi samme on kontrollida, kas RAML meie repostas vastab spetsifikatsioonile. Oleme proovinud mitmeid t\u00f6\u00f6riistu. \u00dcllatav, kuid k\u00f5ik need skeemitavad meie annotatsioonide \u00fcle erinevates kohtades ja t\u00e4iesti erinevate inetute s\u00f5nadega. Samuti ei pruugi see alati asjakohane olla : ).<\/p>\n<p>L\u00f5puks peatusime praegu aegunud projektile, millel on samuti mitmeid probleeme (m\u00f5nikord jookseb see kokku igasugustel p\u00f5hjustel, tal on probleeme regulaaravaldiste t\u00f6\u00f6tlemisega). Seega ei leidnud me tasuta t\u00f6\u00f6riistade p\u00f5hjal viisi valideerimise ja konversiooni \u00fclesannete lahendamiseks, ja otsustasime kasutada kommertstootes. Tulevikus, kui OpenSource vahendid arenevad, v\u00f5ib selle \u00fclesande lahendamine muutuda lihtsamaks. Ainult praegu tundusid meeleheide ja ajakulu, mis kulus<\/p>\n<h3>Kokkuv\u00f5te<\/h3>\n<p>\nP\u00e4rast seda soovime jagada oma kogemust ja m\u00e4rkida, et enne t\u00f6\u00f6riista valimist lepingute kirjeldamiseks tuleb selgelt v\u00e4lja selgitada, mida te soovite, ja millise eelarve olete valmis investeerima. Kui unustada OpenSource, on juba praegu saadaval palju teenuseid ja tooteid, mis aitavad kontrollida, konverteerida ja valideerida. Kuid need on kallid, m\u00f5nikord v\u00e4ga kallid. Suurettev\u00f5tte jaoks on sellised kulud talutavad, kuid idufirma jaoks v\u00f5ivad need olla suur koormus.<\/p>\n<p>M\u00e4\u00e4rake t\u00f6\u00f6riistade komplekt, mida kavatsete hiljem kasutada. N\u00e4iteks, kui teil on lihtsalt vaja lepingut kuvada, on lihtsam kasutada Swagger 2, millel on ilus API, kuna RAML-is peate teenuse ise \u00fcles ehitama ja seda hooldama.<br \/>\nMida rohkem \u00fclesandeid teil on, seda laiem on t\u00f6\u00f6riistade vajadus, ja need on erinevad erinevate platvormide jaoks. Parim on tutvuda olemasolevate versioonidega kohe, et teha valik, mis minimaliseerib teie tulevased kulud.<\/p>\n<p>Kuid tuleb tunnustada, et k\u00f5ik t\u00e4nap\u00e4eval eksisteerivad \u00f6kos\u00fcsteemid on puudulikud. Seega, kui ettev\u00f5ttes on entusiastid, kes armastavad t\u00f6\u00f6tada RAML-is, sest \"see v\u00f5imaldab m\u00f5tteid paindlikumalt v\u00e4ljendada\", v\u00f5i vastupidi, eelistavad Swaggerit, sest \"see on arusaadavam\", on k\u00f5ige parem lasta neil t\u00f6\u00f6tada sellega, millega nad on harjunud ja mida nad soovivad, sest igas formaadis t\u00f6\u00f6riistade kasutamine n\u00f5uab viimistlemist. <\/p>\n<p>Mis puudutab meie kogemust, siis j\u00e4rgmistes postitustes r\u00e4\u00e4gime, milliseid - staatilisi ja d\u00fcnaamilisi kontrollimisi me teostame meie RAML-Swagger arhitektuuri alusel, samuti millist dokumentatsiooni me genereerime lepingutest ja kuidas see k\u00f5ik toimib.<\/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 (tuntud ka kui)<\/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>                    Teine<\/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. V\u00e4itnud 24 kasutajat.<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.1.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.\" \/>\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.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\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.\" \/>\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 et kas RAML v\u00f5i OAS (Swagger)? | ProHoster","description":"D\u00fcnaamilises mikroteenuste maailmas v\u00f5ib k\u00f5ik muutuda - iga komponent v\u00f5ib olla \u00fcmber kirjutatud teises keeles, kasutades teisi raamistikku ja arhitektuuri.","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.","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}]}}