{"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\/sq\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger","title":{"rendered":"Pra, RAML apo OAS (Swagger)?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>N\u00eb bot\u00ebn dinamike t\u00eb mikroservic\u00ebve, gjith\u00e7ka mund t\u00eb ndryshoj\u00eb \u2014 \u00e7do komponent mund t\u00eb rikadohet n\u00eb nj\u00eb gjuh\u00eb tjet\u00ebr, duke p\u00ebrdorur framework-e dhe arkitektur\u00eb t\u00eb tjera. Ajo q\u00eb duhet t\u00eb mbetet e pandryshueshme jan\u00eb kontratat, p\u00ebr t'u mund\u00ebsuar bashk\u00ebveprimin me mikroservicin nga jasht\u00eb n\u00eb nj\u00eb baz\u00eb t\u00eb q\u00ebndrueshme, pavar\u00ebsisht metamorfosave t\u00eb brendshme. Sot do t\u00eb flasim p\u00ebr problemin ton\u00eb t\u00eb zgjedhjes s\u00eb formatit t\u00eb p\u00ebrshkrimit t\u00eb kontratave dhe do t\u00eb ndajm\u00eb artefaktet e gjetura. <\/p>\n<p><img decoding=\"async\" alt=\"Pra, RAML apo 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 \/>\nPostimi \u00ebsht\u00eb p\u00ebrgatitur nga <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/annatref\/\">Anna Melekhova<\/a><\/noindex> dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/vlapat\/\">Vladimir Lapatin<\/a><\/noindex> <\/p>\n<p><b>Mikroservic\u00ebt.<\/b> Gjat\u00eb zhvillimit t\u00eb Acronis Cyber Cloud, kuptuam se nuk mund t\u00eb shmangnim mikroservic\u00ebt. Projektimi i nj\u00eb mikroservici \u00ebsht\u00eb i pamundur pa formalisht kontrat\u00ebn, e cila p\u00ebrb\u00ebn nd\u00ebrfaqen e mikroservicit.<\/p>\n<p>Por kur n\u00eb produkt ka m\u00eb shum\u00eb se nj\u00eb komponent, dhe zhvillimi i kontrat\u00ebs b\u00ebhet nj\u00eb aktivitet i rregullt, fillon t\u00eb shfaqet nevoja p\u00ebr optimizimin e procesit. Duksh\u00ebm \u00ebsht\u00eb evidente se nd\u00ebrfaqja (kontrata) dhe implementimi (mikroservici) duhet t\u00eb harmonizohen, q\u00eb komponent\u00ebt e ndrysh\u00ebm duhet t\u00eb kryejn\u00eb t\u00eb nj\u00ebjtat funksione n\u00eb m\u00ebnyr\u00eb t\u00eb nj\u00ebjt\u00eb, dhe se pa nj\u00eb vendim t\u00eb centralizuar p\u00ebr t\u00eb gjith\u00eb k\u00ebto, \u00e7do ekip do t\u00eb detyrohet t\u00eb harxhoj\u00eb koh\u00eb p\u00ebrs\u00ebri dhe p\u00ebrs\u00ebri p\u00ebr t'i marr\u00eb ato. <\/p>\n<p><img decoding=\"async\" alt=\"Pra, RAML apo OAS (Swagger)?\" src=\"\/wp-content\/uploads\/2019\/09\/48048d36536f02a3a71821e7f6f32a17.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Skema e mikroservic\u00ebve t\u00eb Amazon nga <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/werner\/status\/741673514567143424\">tweeti<\/a><\/noindex> i Werner Vogels, CTO i Amazon<\/i><br \/>\nCila \u00ebsht\u00eb dilema? N\u00eb fakt, ka dy m\u00ebnyra interaktoni me mikroservic\u00ebt \u2013 HTTP Rest dhe gRPC nga Google. Duke mos d\u00ebshiruar t\u00eb p\u00ebrfshihesh n\u00eb stack-un e teknologjive t\u00eb Google, ne zgjodh\u00ebm HTTP Rest. Annotimet e kontratave HTTP REST shpesh p\u00ebrshkruhen n\u00eb nj\u00eb nga dy formate: RAML dhe OAS, t\u00eb njohura m\u00eb par\u00eb si Swagger. Prandaj, \u00e7do ekip zhvillues has nevoj\u00ebn p\u00ebr t\u00eb zgjedhur nj\u00eb nga standardet. Por, si\u00e7 doli, t\u00eb b\u00ebsh k\u00ebt\u00eb zgjedhje mund t\u00eb jet\u00eb shum\u00eb e v\u00ebshtir\u00eb.<\/p>\n<h3>Pse nevojiten annotimet?<\/h3>\n<p>\nAnnotimi \u00ebsht\u00eb i nevojsh\u00ebm q\u00eb p\u00ebrdoruesi i jasht\u00ebm t\u00eb mund t\u00eb kuptoj\u00eb leht\u00ebsisht se \u00e7far\u00eb mund t\u00eb b\u00ebj\u00eb me sh\u00ebrbimin tuaj p\u00ebrmes nd\u00ebrfaqes s\u00eb tij HTTP. K\u00ebshtu, n\u00eb nivelin bazik, annotimi duhet t\u00eb p\u00ebrmbaj\u00eb t\u00eb pakt\u00ebn nj\u00eb list\u00eb t\u00eb burimeve t\u00eb disponueshme, metodat e tyre HTTP, trupat e k\u00ebrkesave, renditjen e parametrave, p\u00ebrcaktimin e headereve t\u00eb nevojshme dhe t\u00eb mb\u00ebshtetur, si dhe kodet e kthimit dhe formatet e p\u00ebrgjigjeve. Nj\u00eb element shum\u00eb i r\u00ebnd\u00ebsish\u00ebm i annotimit t\u00eb kontrat\u00ebs \u00ebsht\u00eb edhe p\u00ebrshkrimi i tyre verbal (\u201c\u00e7far\u00eb do t\u00eb ndodh\u00eb n\u00ebse shtohet ky query-paramet\u00ebr n\u00eb k\u00ebrkes\u00eb?\u201d, \u201cn\u00eb cilat raste kthehet kodi 400?\u201d)<\/p>\n<p>Megjithat\u00eb, kur flitet p\u00ebr zhvillimin e nj\u00eb numri t\u00eb madh t\u00eb mikroservic\u00ebve, d\u00ebshirohet t\u00eb nxirret nj\u00eb p\u00ebrfitim shtes\u00eb nga annotimet e shkruara. P\u00ebr shembuj, n\u00eb baz\u00eb t\u00eb RAML\/SWAGGER mund t\u00eb gjenerohet nj\u00eb kod klienti dhe serveri n\u00eb nj\u00eb num\u00ebr t\u00eb madh gjuh\u00ebsh programuese. Po ashtu, mund t\u00eb gjenerohet automatikisht dokumentacioni p\u00ebr mikroservicin dhe t\u00eb ngarkohet n\u00eb portalin tuaj t\u00eb zhvilluesve :).<\/p>\n<p><img decoding=\"async\" alt=\"Pra, RAML apo OAS (Swagger)?\" src=\"\/wp-content\/uploads\/2019\/09\/0c71fb27949bdde82172c58d0c95c432.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Shembulli i nj\u00eb p\u00ebrshkrimi t\u00eb strukturuar t\u00eb kontrat\u00ebs<\/i><\/p>\n<p>Praktika e testimit t\u00eb mikroservic\u00ebve n\u00eb baz\u00eb t\u00eb p\u00ebrshkrimeve t\u00eb kontratave takohen m\u00eb rrall\u00eb. N\u00ebse keni shkruar si annotimin, ashtu edhe komponentin, mund t\u00eb krijoni nj\u00eb test automatik q\u00eb kontrollon adekuat\u00ebsin\u00eb e pun\u00ebs s\u00eb sh\u00ebrbimit me lloje t\u00eb ndryshme t\u00eb t\u00eb dh\u00ebnave n\u00eb hyrje. A kthen sh\u00ebrbimi ndonj\u00eb kod p\u00ebrgjigjie, i cili nuk \u00ebsht\u00eb p\u00ebrshkruar n\u00eb annotim? A do t\u00eb jet\u00eb n\u00eb gjendje t\u00eb procesoj\u00eb t\u00eb dh\u00ebnat e gabuara n\u00eb m\u00ebnyr\u00eb t\u00eb sakt\u00eb?<\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, realizimi cil\u00ebsor jo vet\u00ebm i kontratave, por edhe t\u00eb mjeteve p\u00ebr vizualizimin e annotimeve, lejon t\u00eb thjesht\u00ebsohet puna me mikroservicin. K\u00ebshtu, n\u00ebse arkitekti e p\u00ebrshkruan me cil\u00ebsi kontrat\u00ebn, mbi at\u00eb baz\u00eb dizajner\u00ebt dhe zhvilluesit do t\u00eb integrojn\u00eb sh\u00ebrbimin n\u00eb produkte t\u00eb tjera pa shpenzuar koh\u00eb shtes\u00eb.<\/p>\n<p>P\u00ebr pun\u00ebn e mjeteve t\u00eb tjera, si RAML ashtu edhe OAS kan\u00eb mund\u00ebsin\u00eb e shtimit t\u00eb metadatanave, t\u00eb cilat nuk parashihen nga standardi (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/OAI\/OpenAPI-Specification\/blob\/master\/versions\/3.0.0.md#specification-extensions\">p\u00ebr shembull, k\u00ebshtu b\u00ebhet n\u00eb OAS<\/a><\/noindex>).<\/p>\n<p>N\u00eb p\u00ebrgjith\u00ebsi, fusha p\u00ebr krijimtarin\u00eb n\u00eb aplikimin e kontratave p\u00ebr mikroservic\u00ebt \u00ebsht\u00eb e madhe... t\u00eb pakt\u00ebn n\u00eb teori<\/p>\n<h3>Krahasoni nj\u00eb gjel me nj\u00eb asfalt<\/h3>\n<p>\nN\u00eb k\u00ebt\u00eb moment, drejtimi prioritar i zhvillimit n\u00eb Acronis \u00ebsht\u00eb p\u00ebrmir\u00ebsimi i Acronis Cyber Platform. Acronis Cyber Platform \u00ebsht\u00eb pik\u00ebt e reja t\u00eb integrimit t\u00eb sh\u00ebrbimeve t\u00eb jashtme me Acronis Cyber Cloud dhe pjes\u00ebn agjente. Nd\u00ebrsa API-t\u00eb tona t\u00eb brendshme, t\u00eb p\u00ebrshkruara n\u00eb RAML, na k\u00ebnaqnin, nevoj\u00ebn p\u00ebr publikimin e API-r\u00ebve e rriti s\u00ebrish pyetjen: cili \u00ebsht\u00eb standardi m\u00eb i mir\u00eb i annotimeve p\u00ebr pun\u00ebn ton\u00eb?<\/p>\n<p>Fillimisht dukej se zgjidhjet ishin dy \u2014 jan\u00eb zhvillimet m\u00eb t\u00eb zakonshme RAML dhe Swagger (ose OAS). Por n\u00eb fakt doli se alternativat jan\u00eb t\u00eb pakt\u00ebn 2, por 3 ose m\u00eb shum\u00eb.<\/p>\n<p>N\u00eb nj\u00eb an\u00eb \u00ebsht\u00eb RAML - nj\u00eb gjuh\u00eb e fuqishme dhe efektive. Ajo implementon mir\u00eb hierarkin\u00eb dhe trash\u00ebgimin\u00eb, k\u00ebshtu q\u00eb ky format \u00ebsht\u00eb m\u00eb i p\u00ebrshtatsh\u00ebm p\u00ebr kompanit\u00eb e m\u00ebdha q\u00eb kan\u00eb nevoj\u00eb p\u00ebr shum\u00eb p\u00ebrshkrime - dometh\u00ebn\u00eb jo vet\u00ebm nj\u00eb produkt, por shum\u00eb mikrosh\u00ebrbime q\u00eb kan\u00eb pjes\u00eb t\u00eb p\u00ebrbashk\u00ebta t\u00eb kontratave - skemat e autentifikimit, llojet e t\u00eb dh\u00ebnave t\u00eb nj\u00ebjta, trupat e gabimeve.<\/p>\n<p>Por zhvilluesi i RAML, kompania Mulesoft, u bashkua me konsorciumin Open API, i cili merret me zhvillimin <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>. Prandaj, RAML e ndali zhvillimin e tij. P\u00ebr t\u00eb imagjinuar formatin e ngjarjes, imagjinoni se mbajt\u00ebsit e komponenteve kryesore t\u00eb Linux u larguan p\u00ebr t'u pun\u00ebsuar n\u00eb Microsoft. Nj\u00eb situat\u00eb e till\u00eb krijon parakushte p\u00ebr t\u00eb p\u00ebrdorur Swagger, i cili zhvillohet dinamik dhe n\u00eb versionin e tij t\u00eb tret\u00eb arrin praktikisht t\u00eb p\u00ebrmbush\u00eb RAML n\u00eb fleksibilitet dhe funksionalitet.<\/p>\n<h3>N\u00ebse nuk do ishte nj\u00eb por\u2026<\/h3>\n<p>\nSi\u00e7 rezulton, shum\u00eb nga mjetet open-source nuk jan\u00eb p\u00ebrdit\u00ebsuar n\u00eb versionin OAS 3.0. P\u00ebr mikrosh\u00ebrbimet n\u00eb Go, m\u00eb kritike do t\u00eb jet\u00eb mungesa e adaptimit t\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/go-swagger\/go-swagger\">go-swagger<\/a><\/noindex> n\u00eb versionin e ri t\u00eb standardit. Megjithat\u00eb, diferenca midis Swagger 2 dhe Swagger 3 \u00ebsht\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/swagger.io\/blog\/news\/whats-new-in-openapi-3-0\/\">e madhe.<\/a><\/noindex>P\u00ebr shembull, n\u00eb versionin e tret\u00eb zhvilluesit:<\/p>\n<ul>\n<li>p\u00ebrmir\u00ebsuan p\u00ebrshkrimin e skemave t\u00eb autentifikimit<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/swagger-api\/swagger-ui\/issues\/4819#issuecomment-413890929\">p\u00ebrfunduan<\/a><\/noindex> mb\u00ebshtetje p\u00ebr JSON Schema<\/li>\n<li>shp\u00ebrndan mund\u00ebsin\u00eb e shtimit t\u00eb shembujve.<\/li>\n<\/ul>\n<p>\nSituata del qesharake: kur zgjidhni standardin, duhet t'i shihni RAML, Swagger 2 dhe Swagger 3 si alternativa t\u00eb ve\u00e7anta. N\u00eb k\u00ebt\u00eb rast, vet\u00ebm Swagger 2 ka mb\u00ebshtetje t\u00eb mir\u00eb nga mjetet OpenSource. RAML \u00ebsht\u00eb shum\u00eb fleksib\u00ebl\u2026 dhe i nd\u00ebrlikuar, nd\u00ebrsa Swagger 3 mb\u00ebshtetet pak nga komuniteti, k\u00ebshtu q\u00eb do t\u00eb duhet t\u00eb p\u00ebrdorni mjete t\u00eb zhvillimit t\u00eb brendsh\u00ebm ose zgjidhje komerciale, t\u00eb cilat, si rregull, jan\u00eb shum\u00eb t\u00eb shtrenjta. <\/p>\n<p>Dhe megjithat\u00eb, n\u00ebse Swagger ka shum\u00eb mund\u00ebsi t\u00eb k\u00ebndshme, si\u00e7 \u00ebsht\u00eb portali i gatsh\u00ebm <noindex><a rel=\"nofollow\" href=\"https:\/\/editor.swagger.io\">editor.swagger.io<\/a><\/noindex>, ku mund t\u00eb ngarkoni nj\u00eb annotim dhe t\u00eb merrni vizualizimin e tij me p\u00ebrshkrim t\u00eb detajuar, lidhje dhe marr\u00ebdh\u00ebnie, p\u00ebr RAML, i cili \u00ebsht\u00eb m\u00eb themelor dhe m\u00eb pak miq\u00ebsor, nuk ka nj\u00eb mund\u00ebsi t\u00eb till\u00eb. Po, mund t\u00eb k\u00ebrkoni di\u00e7ka n\u00eb projektet n\u00eb GitHub, t\u00eb gjeni atje nj\u00eb analog dhe ta zhvilloni vet\u00eb. Megjithat\u00eb, n\u00eb \u00e7do rast, dikush do t\u00eb duhet ta mbaj\u00eb portalin, q\u00eb nuk \u00ebsht\u00eb aq e p\u00ebrshtatshme p\u00ebr p\u00ebrdorim t\u00eb thjesht\u00eb ose nevoja testuese. P\u00ebrve\u00e7 k\u00ebsaj, swagger \u00ebsht\u00eb m\u00eb \"pa parime\", ose m\u00eb liberal - mund t\u00eb gjenerohet nga komentet n\u00eb kod, q\u00eb natyrisht shkon n\u00eb p\u00ebrputhje me parimin API first dhe nuk mb\u00ebshtetet nga asnj\u00eb nga mjetet RAML.<\/p>\n<p>N\u00eb at\u00eb koh\u00eb filluam t\u00eb punojm\u00eb me RAML si nj\u00eb gjuh\u00eb m\u00eb fleksibile, dhe n\u00eb fund duhej t\u00eb b\u00ebnim shum\u00eb gj\u00ebra me duar. P\u00ebr shembull, n\u00eb nj\u00eb nga projektet p\u00ebrdoret mjeti <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/spotify\/ramlfications\">ramlfications<\/a><\/noindex> n\u00eb testet e nj\u00ebsive, i cili mb\u00ebshtet vet\u00ebm RAML 0.8. Prandaj, duhej t\u00eb shtonim 'bandages' q\u00eb mjeti t\u00eb mund t\u00eb \"han\u00eb\" RAML versionin 1.0.<\/p>\n<h3>A duhet t\u00eb zgjidhet?<\/h3>\n<p>\nPas nj\u00eb p\u00ebrpjekjeje me shtimin e ekosistemit t\u00eb zgjidhjeve p\u00ebr RAML, arrit\u00ebm n\u00eb p\u00ebrfundimin se duhej ta konvertonim RAML n\u00eb Swagger 2 dhe t\u00eb realizonim t\u00eb gjith\u00eb automatizimin, verifikimin, testimin dhe optimizimin e m\u00ebvonsh\u00ebm brenda tij. Ky \u00ebsht\u00eb nj\u00eb m\u00ebnyr\u00eb e mir\u00eb p\u00ebr t\u00eb p\u00ebrdorur, nj\u00ebkoh\u00ebsisht, fleksibilitetin e RAML dhe mb\u00ebshtetje nga komuniteti t\u00eb mjeteve t\u00eb Swagger. <\/p>\n<p>P\u00ebr t\u00eb zgjidhur k\u00ebt\u00eb problem ekzistojn\u00eb dy mjete OpenSource, q\u00eb duhet t\u00eb sigurojn\u00eb konvertimin e kontratave:<\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mulesoft\/oas-raml-converter\">oas-raml-converter<\/a><\/noindex> - nj\u00eb mjet q\u00eb tani nuk mb\u00ebshtetet. Gjat\u00eb pun\u00ebs me t\u00eb, zbuluam se kishte nj\u00eb s\u00ebr\u00eb problemesh me RAML t\u00eb komplikuara, t\u00eb cilat \"shtrihen\" n\u00eb shum\u00eb skedar\u00eb. Ky program \u00ebsht\u00eb shkruar n\u00eb JavaScript dhe kryen nj\u00eb kalim n\u00ebp\u00ebr pem\u00ebn sintaksore. P\u00ebr shkak t\u00eb tipizimit dinamik, kuptimi i k\u00ebtij kodit b\u00ebhet i v\u00ebshtir\u00eb, k\u00ebshtu q\u00eb vendos\u00ebm t\u00eb mos shpenzojm\u00eb koh\u00eb mbi shkrimin e patch-eve p\u00ebr nj\u00eb mjet q\u00eb po vdes.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/raml-org\/webapi-parser\">webapi-parser<\/a><\/noindex> - nj\u00eb mjet nga e nj\u00ebjta kompani, q\u00eb pretendon t\u00eb jet\u00eb gati t\u00eb konvertoj\u00eb gjith\u00e7ka dhe n\u00eb \u00e7do drejtim. Aktualisht, \u00ebsht\u00eb deklaruar mb\u00ebshtetje p\u00ebr RAML 0.8, RAML 1.0 dhe Swagger 2.0. Megjithat\u00eb, n\u00eb momentin e k\u00ebrkimit ton\u00eb, mjeti ishte ende <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/aml-org\/amf\/issues\/517\">EKSTREMISHT<\/a><\/noindex> i pap\u00ebrgatitur dhe i pap\u00ebrdorsh\u00ebm. Zhvilluesit po krijojn\u00eb nj\u00eb lloj <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Intermediate_representation\">IR<\/a><\/noindex>, q\u00eb do t\u2019u lejoj\u00eb atyre n\u00eb t\u00eb ardhmen t\u00eb shtojn\u00eb shpejt standarde t\u00eb reja. Por p\u00ebr momentin, kjo thjesht nuk funksionon.<\/li>\n<\/ol>\n<p>\nDhe kjo nuk \u00ebsht\u00eb e gjitha, nd\u00ebrlikimet me t\u00eb cilat u p\u00ebrball\u00ebm. Nj\u00eb nga hapat e pipeline-it ton\u00eb \u00ebsht\u00eb verifikimi q\u00eb RAML nga repo \u00ebsht\u00eb i sakt\u00eb n\u00eb marr\u00ebveshje me specifikimin. Provuam disa mjete. Mrekullisht, por t\u00eb gjitha ato ankohej n\u00eb anotimet tona n\u00eb vende t\u00eb ndryshme me fjal\u00eb t\u00eb ndryshme t\u00eb k\u00ebqija. Dhe jo gjithmon\u00eb me t\u00eb drejt\u00eb :).<\/p>\n<p>N\u00eb fund, u ndal\u00ebm n\u00eb nj\u00eb projekt q\u00eb tani \u00ebsht\u00eb i vjetruar, i cili gjithashtu ka nj\u00eb s\u00ebr\u00eb problemesh (n\u00eb disa raste bie pa arsye, ka v\u00ebshtir\u00ebsi n\u00eb pun\u00ebn me shprehjet e rregullta). K\u00ebshtu, nuk gjet\u00ebm nj\u00eb m\u00ebnyr\u00eb p\u00ebr t\u00eb zgjidhur detyrat e validimit dhe konvertimit me ndihm\u00ebn e mjeteve falas, dhe vendos\u00ebm t\u00eb p\u00ebrdorim nj\u00eb utilitare komerciale. N\u00eb t\u00eb ardhmen, kur mjetet OpenSource t\u00eb avancohen m\u00eb shum\u00eb, zgjidhja e k\u00ebsaj problemi, ndoshta, do t\u00eb b\u00ebhet m\u00eb e leht\u00eb. Nd\u00ebrkoh\u00eb, kostot e pun\u00ebs dhe koh\u00ebs p\u00ebr \u201cp\u00ebrmir\u00ebsime\u201d na dukeshin m\u00eb t\u00eb m\u00ebdha se \u00e7mimi i sh\u00ebrbimit komercial.<\/p>\n<h3>P\u00ebrfundimi<\/h3>\n<p>\nPas t\u00eb gjithave, na erdhi d\u00ebshira t\u00eb ndajm\u00eb p\u00ebrvoj\u00ebn dhe t\u00eb theksojm\u00eb se para se t\u00eb zgjidhni nj\u00eb mjet p\u00ebr p\u00ebrshkrimin e kontratave, duhet t\u00eb sqaroni qart\u00eb se \u00e7far\u00eb d\u00ebshironi prej tij dhe \u00e7far\u00eb buxheti jeni t\u00eb gatsh\u00ebm t\u00eb investoni. N\u00ebse e harroni OpenSource, tani ka nj\u00eb num\u00ebr t\u00eb madh sh\u00ebrbimesh dhe produkteve q\u00eb ndihmojn\u00eb n\u00eb verifikim, konvertim dhe validim. Por ato jan\u00eb t\u00eb shtrenjta, ndonj\u00ebher\u00eb - shum\u00eb t\u00eb shtrenjta. P\u00ebr nj\u00eb kompani t\u00eb madhe, k\u00ebto shpenzime jan\u00eb t\u00eb pranueshme, por p\u00ebr nj\u00eb startup mund t\u00eb b\u00ebhen nj\u00eb ngarkes\u00eb e madhe.<\/p>\n<p>P\u00ebrcaktoni grupin e mjeteve q\u00eb do t\u00eb p\u00ebrdorni m\u00eb von\u00eb. P\u00ebr shembull, n\u00ebse thjesht ju nevojitet t\u00eb shfaqni kontrat\u00ebn, do t\u00eb ishte m\u00eb e leht\u00eb t\u00eb p\u00ebrdornit Swagger 2, i cili ka nj\u00eb API t\u00eb bukur, nd\u00ebrsa n\u00eb RAML do t'ju nevojitet t\u00eb ngrini dhe mbani sh\u00ebrbimin vet\u00eb.<br \/>\nSa m\u00eb shum\u00eb detyra t\u00eb keni, aq m\u00eb e madhe do t\u00eb jet\u00eb nevoja juaj p\u00ebr mjete, dhe ato jan\u00eb t\u00eb ndryshme p\u00ebr platforma t\u00eb ndryshme, dhe \u00ebsht\u00eb m\u00eb mir\u00eb q\u00eb t\u00eb njihni menj\u00ebher\u00eb versionet e disponueshme p\u00ebr t\u00eb b\u00ebr\u00eb nj\u00eb zgjedhje q\u00eb minimizon shpenzimet tuaja n\u00eb t\u00eb ardhmen.<\/p>\n<p>Por duhet pranuar se t\u00eb gjitha ekosistemet ekzistuese sot jan\u00eb t\u00eb pap\u00ebrsosura. Prandaj, n\u00ebse n\u00eb kompani ka entuziast\u00eb q\u00eb preferojn\u00eb t\u00eb punojn\u00eb me RAML, sepse \"ai lejon shprehje m\u00eb fleksib\u00ebl t\u00eb mendimeve\", ose, p\u00ebrkundrazi, preferojn\u00eb Swagger, sepse \"ai \u00ebsht\u00eb m\u00eb i qart\u00eb\", \u00ebsht\u00eb m\u00eb mir\u00eb t'i lini ata t\u00eb punojn\u00eb n\u00eb at\u00eb q\u00eb jan\u00eb t\u00eb zakonsh\u00ebm dhe duan, sepse ari i \u00e7do formati k\u00ebrkon p\u00ebrmir\u00ebsime t\u00eb vogla. <\/p>\n<p>Sa i p\u00ebrket p\u00ebrvoj\u00ebs ton\u00eb, n\u00eb postimet e ardhshme do t\u00eb ndajm\u00eb se cilat - kontrollime statike dhe dinamike ne realizojm\u00eb mbi baz\u00ebn e arkitektur\u00ebs son\u00eb RAML-Swagger, si dhe dokumentacionin q\u00eb ne gjenerojm\u00eb nga kontratat dhe se si funksionon e gjith\u00eb kjo.<\/p>\n<p class=\"for_users_only_msg\">Vet\u00ebm p\u00ebrdoruesit e regjistruar mund t\u00eb marrin pjes\u00eb n\u00eb anket\u00eb. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Hyni<\/a><\/noindex>, ju lutemi.<\/p>\n<h2 class=\"default-block__polling-title\">Cilin gjuh\u00eb p\u00ebrdorni p\u00ebr anotimet e kontratave t\u00eb mikrosh\u00ebrbimeve?<\/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 (aka )<\/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>                    E tjera<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Nuk p\u00ebrdor<\/p>\n<\/li>\n<\/ul>\n<p>    100 p\u00ebrdorues votuan. 24 p\u00ebrdorues abstenuan.<br \/>\n<br \/>Burimi: <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\/sq\/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=\"sq_AL\" \/>\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\/sq\/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\udd47Sidoqoft\u00eb, RAML apo OAS (Swagger)? | ProHoster","description":"N\u00eb bot\u00ebn dinamike t\u00eb mikrosh\u00ebrbimeve, \u00e7do gj\u00eb mund t\u00eb ndryshohet - \u00e7do komponent mund t\u00eb rishkruhet n\u00eb nj\u00eb gjuh\u00eb tjet\u00ebr, duke p\u00ebrdorur korniza dhe arkitektur\u00eb t\u00eb ndryshme. Ajo q\u00eb duhet t\u00eb mbetet e pandryshuar jan\u00eb kontratat, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mund t\u00eb interaktoni me mikrosh\u00ebrbimin nga jasht\u00eb n\u00eb nj\u00eb baz\u00eb t\u00eb caktuar q\u00eb mbetet e konstant, pavar\u00ebsisht nga metamorfizat e brendshme. Dhe sot do t\u00eb flasim mbi problemin ton\u00eb p\u00ebr t\u00eb zgjedhur formatin e p\u00ebrshkrimit","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/38022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=38022"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/38022\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/28540"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=38022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=38022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=38022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}