{"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\/hu\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger","title":{"rendered":"Teh\u00e1t m\u00e9gis RAML vagy OAS (Swagger)?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>A dinamikus mikroszervizek vil\u00e1g\u00e1ban b\u00e1rmi megv\u00e1ltozhat \u2013 b\u00e1rmely komponenst \u00e1t lehet \u00edrni m\u00e1s nyelven, k\u00fcl\u00f6nb\u00f6z\u0151 keretrendszereket \u00e9s architekt\u00far\u00e1kat haszn\u00e1lva. Csak a szerz\u0151d\u00e9seknek kell \u00e1lland\u00f3nak maradniuk, hogy a mikroszervizzel k\u00fcls\u0151leg folyamatosan lehetett interakci\u00f3ba l\u00e9pni, f\u00fcggetlen\u00fcl a bels\u0151 metamorf\u00f3zisokt\u00f3l. Ma arr\u00f3l fogunk besz\u00e9lni, hogy mi\u00e9rt neh\u00e9z a szerz\u0151d\u00e9sek le\u00edr\u00e1s\u00e1nak form\u00e1tum\u00e1t v\u00e1lasztani, \u00e9s megosztjuk a felfedezett artefaktumokat. <\/p>\n<p><img decoding=\"async\" alt=\"Teh\u00e1t m\u00e9gis RAML vagy 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 \/>\nA bejegyz\u00e9st k\u00e9sz\u00edtette <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/annatref\/\">Anna Melekhova<\/a><\/noindex> \u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/vlapat\/\">Vladimir Lapatin<\/a><\/noindex> <\/p>\n<p><b>Mikroszervizek.<\/b> Az Acronis Cyber Cloud fejleszt\u00e9se sor\u00e1n r\u00e1j\u00f6tt\u00fcnk, hogy nem \u00e9lhet\u00fcnk n\u00e9lk\u00fcl\u00fck. A mikroszerviz tervez\u00e9se lehetetlen a szerz\u0151d\u00e9s formaliz\u00e1l\u00e1sa n\u00e9lk\u00fcl, amely a mikroszerviz interf\u00e9szek\u00e9nt funkcion\u00e1l.<\/p>\n<p>De amikor a term\u00e9k t\u00f6bb mint egy komponenst tartalmaz, \u00e9s a szerz\u0151d\u00e9s fejleszt\u00e9se rendszeres tev\u00e9kenys\u00e9gg\u00e9 v\u00e1lik, elker\u00fclhetetlen\u00fcl az optimaliz\u00e1l\u00e1si folyamaton kezdj\u00fck gondolkodni. Nyilv\u00e1nval\u00f3v\u00e1 v\u00e1lik, hogy az interf\u00e9sz (szerz\u0151d\u00e9s) \u00e9s az implement\u00e1ci\u00f3 (mikroszerviz) \u00f6sszhangban kell legyen egym\u00e1ssal, hogy a k\u00fcl\u00f6nb\u00f6z\u0151 komponenseknek ugyanazt a feladatot azonos m\u00f3don kell elv\u00e9gezni\u00fck, \u00e9s hogy a k\u00f6zpontos\u00edtott d\u00f6nt\u00e9shozatal n\u00e9lk\u00fcl minden csapatnak \u00fajra \u00e9s \u00fajra id\u0151t kell k\u00f6ltenie ezek megszerz\u00e9s\u00e9re. <\/p>\n<p><img decoding=\"async\" alt=\"Teh\u00e1t m\u00e9gis RAML vagy OAS (Swagger)?\" src=\"\/wp-content\/uploads\/2019\/09\/48048d36536f02a3a71821e7f6f32a17.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Az Amazon mikroszervizes architekt\u00far\u00e1ja <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/werner\/status\/741673514567143424\">tweetb\u0151l<\/a><\/noindex> Werner Vogels, az Amazon CTO-j\u00e1nak<\/i><br \/>\nMi is a dilemma? De facto k\u00e9t m\u00f3don l\u00e9teznek a mikroszervizek k\u00f6z\u00f6tti interakci\u00f3k \u2013 HTTP Rest \u00e9s a Google \u00e1ltal kifejlesztett gRPC. A Google technol\u00f3giai stackj\u00e9be val\u00f3 bevon\u00f3d\u00e1s elker\u00fcl\u00e9se \u00e9rdek\u00e9ben a HTTP Rest mellett d\u00f6nt\u00f6tt\u00fcnk. A HTTP REST szerz\u0151d\u00e9sekhez val\u00f3 annot\u00e1ci\u00f3k \u00e1ltal\u00e1ban az al\u00e1bbi k\u00e9t form\u00e1tum egyik\u00e9ben tal\u00e1lhat\u00f3k: RAML \u00e9s OAS, amely kor\u00e1bban Swagger n\u00e9ven volt ismert. Ez\u00e9rt minden fejleszt\u0151csapatnak szembe kell n\u00e9znie azzal a sz\u00fcks\u00e9ggel, hogy v\u00e1lasszon az egyik szabv\u00e1ny mellett. De ahogy kider\u00fclt, ez a v\u00e1laszt\u00e1s nem mindig k\u00f6nny\u0171.<\/p>\n<h3>Mi\u00e9rt van sz\u00fcks\u00e9g annot\u00e1ci\u00f3kra?<\/h3>\n<p>\nAz annot\u00e1ci\u00f3 arra szolg\u00e1l, hogy a k\u00fcls\u0151 felhaszn\u00e1l\u00f3 k\u00f6nnyen meg\u00e9rtse, mit lehet tenni a szolg\u00e1ltat\u00e1ssal a HTTP interf\u00e9sze r\u00e9v\u00e9n. Az alapvet\u0151 szinten az annot\u00e1ci\u00f3nak legal\u00e1bb az el\u00e9rhet\u0151 er\u0151forr\u00e1sok list\u00e1j\u00e1t, azok HTTP met\u00f3dusait, a k\u00e9r\u00e9s t\u00f6rzs\u00e9t, a param\u00e9terek felsorol\u00e1s\u00e1t, a sz\u00fcks\u00e9ges \u00e9s t\u00e1mogatott fejl\u00e9cek megjel\u00f6l\u00e9s\u00e9t, valamint a visszat\u00e9r\u00e9si k\u00f3dokat \u00e9s a v\u00e1laszform\u00e1tumokat kell tartalmaznia. Az annot\u00e1ci\u00f3s szerz\u0151d\u00e9s rendk\u00edv\u00fcl fontos eleme a sz\u00f3beli le\u00edr\u00e1suk is (\u201cmi t\u00f6rt\u00e9nik, ha ezt a query-param\u00e9tert hozz\u00e1adjuk a k\u00e9r\u00e9shez?\u201d, \u201cmikor t\u00e9r vissza a 400-as k\u00f3d?\u201d)<\/p>\n<p>Mindazon\u00e1ltal, amikor sok mikroszolg\u00e1ltat\u00e1s fejleszt\u00e9s\u00e9r\u0151l van sz\u00f3, \u00e9rdemes tov\u00e1bbi el\u0151ny\u00f6ket kinyerni az \u00edrt annot\u00e1ci\u00f3kb\u00f3l. P\u00e9ld\u00e1ul a RAML\/Swagger alapj\u00e1n gener\u00e1lhatunk kliens- \u00e9s szerveroldali k\u00f3dot sz\u00e1mos programoz\u00e1si nyelven. R\u00e1ad\u00e1sul automatikusan dokument\u00e1ci\u00f3t is kaphatunk a mikroszolg\u00e1ltat\u00e1sr\u00f3l, \u00e9s felt\u00f6lthetj\u00fck azt a fejleszt\u0151i port\u00e1lunkra :).<\/p>\n<p><img decoding=\"async\" alt=\"Teh\u00e1t m\u00e9gis RAML vagy OAS (Swagger)?\" src=\"\/wp-content\/uploads\/2019\/09\/0c71fb27949bdde82172c58d0c95c432.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>A szerz\u0151d\u00e9s struktur\u00e1lt le\u00edr\u00e1s\u00e1nak p\u00e9ld\u00e1ja<\/i><\/p>\n<p>Ritk\u00e1bban tal\u00e1lkozni azzal a gyakorlattal, hogy mikroszolg\u00e1ltat\u00e1sokat tesztelnek a szerz\u0151d\u00e9sek le\u00edr\u00e1sai alapj\u00e1n. Ha \u00edrt\u00e1l annot\u00e1ci\u00f3t \u00e9s komponenst is, akkor l\u00e9trehozhatsz egy automatikus tesztet, amely ellen\u0151rzi a szolg\u00e1ltat\u00e1s megfelel\u0151 m\u0171k\u00f6d\u00e9s\u00e9t k\u00fcl\u00f6nb\u00f6z\u0151 t\u00edpus\u00fa bemeneti adatokkal. Visszaad-e a szolg\u00e1ltat\u00e1s olyan v\u00e1laszk\u00f3dot, amely nincs le\u00edrva az annot\u00e1ci\u00f3ban? K\u00e9pes-e helyesen kezelni a sz\u00e1nd\u00e9kosan hib\u00e1s adatokat?<\/p>\n<p>Tov\u00e1bb\u00e1, a szerz\u0151d\u00e9sek \u00e9s az annot\u00e1ci\u00f3k vizualiz\u00e1ci\u00f3s eszk\u00f6zeinek min\u0151s\u00e9gi megval\u00f3s\u00edt\u00e1sa lehet\u0151v\u00e9 teszi a mikroszolg\u00e1ltat\u00e1sokkal val\u00f3 munkav\u00e9gz\u00e9s egyszer\u0171s\u00edt\u00e9s\u00e9t. Teh\u00e1t, ha az \u00e9p\u00edt\u00e9sz megfelel\u0151en \u00edrta le a szerz\u0151d\u00e9st, akkor annak alapj\u00e1n a diz\u00e1jnerek \u00e9s a fejleszt\u0151k an\u00e9lk\u00fcl integr\u00e1lj\u00e1k a szolg\u00e1ltat\u00e1st m\u00e1s term\u00e9kekbe, hogy tov\u00e1bbi id\u0151r\u00e1ford\u00edt\u00e1sra lenne sz\u00fcks\u00e9g\u00fck.<\/p>\n<p>A RAML \u00e9s az OAS olyan lehet\u0151s\u00e9geket k\u00edn\u00e1l, amelyek lehet\u0151v\u00e9 teszik nem szabv\u00e1nyos metaadatok hozz\u00e1ad\u00e1s\u00e1t m\u00e1s eszk\u00f6z\u00f6k m\u0171k\u00f6d\u00e9s\u00e9hez (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/OAI\/OpenAPI-Specification\/blob\/master\/versions\/3.0.0.md#specification-extensions\">p\u00e9ld\u00e1ul, \u00edgy t\u00f6rt\u00e9nik az OAS-ban<\/a><\/noindex>).<\/p>\n<p>\u00d6sszess\u00e9g\u00e9ben a szerz\u0151d\u00e9sek mikroszolg\u00e1ltat\u00e1sokban val\u00f3 alkalmaz\u00e1s\u00e1ra hatalmas a kreativit\u00e1s ter\u00fclete... legal\u00e1bbis elm\u00e9letileg<\/p>\n<h3>A s\u00fcndiszn\u00f3 \u00e9s a vipera \u00f6sszehasonl\u00edt\u00e1sa<\/h3>\n<p>\nJelenleg az Acronis fejleszt\u00e9si priorit\u00e1sa az Acronis Cyber Platform fejleszt\u00e9se. Az Acronis Cyber Platform \u00faj integr\u00e1ci\u00f3s pontokat ny\u00fajt harmadik f\u00e9lt\u0151l sz\u00e1rmaz\u00f3 szolg\u00e1ltat\u00e1soknak az Acronis Cyber Cloud \u00e9s az \u00fcgyn\u00f6ki r\u00e9szek k\u00f6z\u00f6tt. B\u00e1r a RAML-ben le\u00edrt bels\u0151 API-jaink megfeleltek, az API k\u00f6zz\u00e9t\u00e9tel\u00e9nek sz\u00fcks\u00e9gess\u00e9ge ism\u00e9t felvetette a k\u00e9rd\u00e9st: melyik annot\u00e1ci\u00f3s szabv\u00e1nyt \u00e9rdemes haszn\u00e1lni a munk\u00e1nkhoz?<\/p>\n<p>Kezdetben \u00fagy t\u0171nt, hogy k\u00e9t megold\u00e1s l\u00e9tezik - a legelterjedtebb RAML \u00e9s Swagger (vagy OAS). De val\u00f3j\u00e1ban kider\u00fclt, hogy legal\u00e1bb h\u00e1rom vagy ann\u00e1l t\u00f6bb alternat\u00edva l\u00e9tezik.<\/p>\n<p>Egyr\u00e9szt itt van a RAML - egy er\u0151s \u00e9s hat\u00e9kony nyelv. J\u00f3l megval\u00f3s\u00edtja a hierarchi\u00e1t \u00e9s az \u00f6r\u00f6kl\u0151d\u00e9st, \u00edgy ez a forma jobban megfelel a nagy v\u00e1llalatoknak, amelyeknek sok le\u00edr\u00e1sra van sz\u00fcks\u00e9g\u00fck - nem egy term\u00e9kre, hanem sok mikroszolg\u00e1ltat\u00e1sra, amelyek k\u00f6z\u00f6s szerz\u0151d\u00e9ses elemekkel rendelkeznek - autentik\u00e1ci\u00f3s s\u00e9m\u00e1k, azonos t\u00edpus\u00fa adatok, hib\u00e1k t\u00f6rzsei.<\/p>\n<p>De a RAML fejleszt\u0151je, a Mulesoft, csatlakozott az Open API konzorciumhoz, amely a fejl\u0151d\u00e9si lehet\u0151s\u00e9gekkel foglalkozik. <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>. Ez\u00e9rt a RAML le\u00e1ll\u00edtotta a fejl\u0151d\u00e9s\u00e9t. Ha elk\u00e9pzelj\u00fck az esem\u00e9ny form\u00e1tum\u00e1t, gondoljunk arra, hogy a Linux f\u0151 komponenseinek karbantart\u00f3i \u00e1tmentek dolgozni a Microsofthoz. Ez a helyzet kedvez a Swagger haszn\u00e1lat\u00e1nak, amely dinamikusan fejl\u0151dik, \u00e9s a leg\u00fajabb - harmadik verzi\u00f3j\u00e1ban - gyakorlatilag utol\u00e9ri a RAML-t rugalmass\u00e1g \u00e9s funkcion\u00e1lis szempontb\u00f3l.<\/p>\n<h3>Ha nem lenne egy kis probl\u00e9ma...<\/h3>\n<p>\nKider\u00fclt, hogy nem minden open-source eszk\u00f6z friss\u00fclt az OAS 3.0 verzi\u00f3ra. A Go alap\u00fa mikroszolg\u00e1ltat\u00e1sok eset\u00e9ben a legkritikusabb a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/go-swagger\/go-swagger\">go-swagger<\/a><\/noindex> \u00faj szabv\u00e1ny friss\u00edt\u00e9s\u00e9nek hi\u00e1nya. Azonban a k\u00fcl\u00f6nbs\u00e9g a Swagger 2 \u00e9s Swagger 3 k\u00f6z\u00f6tt - <noindex><a rel=\"nofollow\" href=\"https:\/\/swagger.io\/blog\/news\/whats-new-in-openapi-3-0\/\">\u00f3ri\u00e1si<\/a><\/noindex>. P\u00e9ld\u00e1ul, a harmadik verzi\u00f3ban a fejleszt\u0151k:<\/p>\n<ul>\n<li>jav\u00edtott\u00e1k az autentik\u00e1ci\u00f3s s\u00e9m\u00e1k le\u00edr\u00e1s\u00e1t<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/swagger-api\/swagger-ui\/issues\/4819#issuecomment-413890929\">befejezt\u00e9k<\/a><\/noindex> a JSON Schema t\u00e1mogat\u00e1s\u00e1t<\/li>\n<li>feldobt\u00e1k a p\u00e9ld\u00e1k hozz\u00e1ad\u00e1s\u00e1nak lehet\u0151s\u00e9g\u00e9t<\/li>\n<\/ul>\n<p>\nA helyzet vicces: a szabv\u00e1ny kiv\u00e1laszt\u00e1s\u00e1n\u00e1l a RAML-t, Swagger 2-t \u00e9s Swagger 3-t k\u00fcl\u00f6n alternat\u00edvak\u00e9nt kell figyelembe venni. Ebben az esetben csak a Swagger 2-nek van j\u00f3 open-source eszk\u00f6zt\u00e1mogat\u00e1sa. A RAML - nagyon rugalmas... \u00e9s bonyolult, m\u00edg a Swagger 3 k\u00f6z\u00f6ss\u00e9gi t\u00e1mogat\u00e1sa gyenge, \u00edgy a saj\u00e1t fejleszt\u00e9s\u0171 vagy kereskedelmi megold\u00e1sok eszk\u00f6zeivel kell dolgoznia, amelyek \u00e1ltal\u00e1ban el\u00e9g dr\u00e1g\u00e1k. <\/p>\n<p>Mik\u00f6zben a Swagger rengeteg kellemes lehet\u0151s\u00e9get k\u00edn\u00e1l, mint p\u00e9ld\u00e1ul a k\u00e9sz port\u00e1l <noindex><a rel=\"nofollow\" href=\"https:\/\/editor.swagger.io\">editor.swagger.io<\/a><\/noindex>, ahov\u00e1 fel lehet t\u00f6lteni egy annot\u00e1ci\u00f3t, \u00e9s r\u00e9szletes le\u00edr\u00e1st, linkeket \u00e9s kapcsolatokat kaphatunk r\u00f3la. A RAML eset\u00e9ben azonban nincs ilyen lehet\u0151s\u00e9g, mivel sokkal alapvet\u0151bb \u00e9s kev\u00e9sb\u00e9 felhaszn\u00e1l\u00f3bar\u00e1t. Persze lehet kutatni a GitHub projektei k\u00f6z\u00f6tt, tal\u00e1lni ott egy anal\u00f3got, \u00e9s saj\u00e1t kez\u0171leg telep\u00edteni. Mindenesetre valakinek t\u00e1mogatnia kell a port\u00e1lt, ami nem annyira k\u00e9nyelmes alapvet\u0151 haszn\u00e1latra vagy tesztel\u00e9si ig\u00e9nyekre. Ezen k\u00edv\u00fcl a swagger \u201eeln\u00e9z\u0151bb\u201d vagy \u201eliber\u00e1lisabb\u201d \u2014 a k\u00f3d megjegyz\u00e9seib\u0151l gener\u00e1lhat\u00f3, ami nyilv\u00e1nval\u00f3an szembemegy az API first elv\u00e9vel, \u00e9s egyik RAML eszk\u00f6z sem t\u00e1mogatja.<\/p>\n<p>Mi id\u0151ben a RAML-lal kezdt\u00fcnk dolgozni, mint egy rugalmasabb nyelvvel, \u00e9s v\u00e9g\u00fcl sok mindent saj\u00e1t kez\u0171leg kellett megoldanunk. P\u00e9ld\u00e1ul az egyik projektben egy <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/spotify\/ramlfications\">ramlfications<\/a><\/noindex> nev\u0171 eszk\u00f6zt haszn\u00e1lunk az egys\u00e9g tesztekhez, amely csak a RAML 0.8-at t\u00e1mogatja. \u00cdgy h\u00e1t \u00e1t kellett hidalni, hogy az eszk\u00f6z \u201emegehesse\u201d a RAML 1.0 verzi\u00f3j\u00e1t.<\/p>\n<h3>Sz\u00fcks\u00e9ges-e v\u00e1lasztani?<\/h3>\n<p>\nMiut\u00e1n sokat k\u00eds\u00e9rletezt\u00fcnk a RAML exosziszt\u00e9ma b\u0151v\u00edt\u00e9s\u00e9vel, arra a k\u00f6vetkeztet\u00e9sre jutottunk, hogy a RAML-t Swagger 2-re kell konvert\u00e1lnunk, \u00e9s m\u00e1r ezen v\u00e9gezni el az automatiz\u00e1l\u00e1st, ellen\u0151rz\u00e9st, tesztel\u00e9st \u00e9s a tov\u00e1bbi optimaliz\u00e1l\u00e1st. Ez egy j\u00f3 m\u00f3dja annak, hogy egyszerre kihaszn\u00e1ljuk a RAML rugalmass\u00e1g\u00e1t \u00e9s a Swagger k\u00f6z\u00f6ss\u00e9gi eszk\u00f6zeinek t\u00e1mogat\u00e1s\u00e1t. <\/p>\n<p>Erre a feladatra k\u00e9t OpenSource eszk\u00f6z \u00e1ll rendelkez\u00e9sre, amelyek a szerz\u0151d\u00e9sek konvert\u00e1l\u00e1s\u00e1t kell, hogy biztos\u00edts\u00e1k:<\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mulesoft\/oas-raml-converter\">oas-raml-converter<\/a><\/noindex> \u2013 jelenleg nem t\u00e1mogatott eszk\u00f6z. Munka k\u00f6zben r\u00e1j\u00f6tt\u00fcnk, hogy sz\u00e1mos probl\u00e9m\u00e1ja van a bonyolult RAML f\u00e1jlokkal, amelyek nagy mennyis\u00e9g\u0171 f\u00e1jlra vannak sz\u00e9tter\u00edtve. Ez a program JavaScript-ben \u00edr\u00f3dott, \u00e9s rekurz\u00edv bej\u00e1r\u00e1st v\u00e9gez a szintaktikai f\u00e1ban. A dinamikus t\u00edpusoss\u00e1g miatt neh\u00e9z kibogozni ezt a k\u00f3dot, \u00edgy \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy nem pazaroljuk az id\u0151nket a kihal\u00f3 eszk\u00f6z jav\u00edt\u00e1s\u00e1ra.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/raml-org\/webapi-parser\">webapi-parser<\/a><\/noindex> \u2014 ugyanannak a c\u00e9gnek az eszk\u00f6ze, amely azt \u00e1ll\u00edtja, hogy k\u00e9sz konvert\u00e1lni mindent \u00e9s minden ir\u00e1nyba. Jelenleg t\u00e1mogatja a RAML 0.8, RAML 1.0 \u00e9s Swagger 2.0 verzi\u00f3kat. Azonban a kutat\u00e1sunk idej\u00e9n az eszk\u00f6z m\u00e9g <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/aml-org\/amf\/issues\/517\">TIM\u00c1R<\/a><\/noindex> nyers volt \u00e9s haszn\u00e1lhatatlan. A fejleszt\u0151k egyfajta <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Intermediate_representation\">IR<\/a><\/noindex>, ami lehet\u0151v\u00e9 teszi sz\u00e1mukra, hogy a j\u00f6v\u0151ben gyorsan \u00faj szabv\u00e1nyokat adjanak hozz\u00e1. De jelenleg ez az eg\u00e9sz egyszer\u0171en nem m\u0171k\u00f6dik.<\/li>\n<\/ol>\n<p>\n\u00c9s ez m\u00e9g nem minden neh\u00e9zs\u00e9g, amivel tal\u00e1lkoztunk. A folyamatunk egyik l\u00e9p\u00e9se annak ellen\u0151rz\u00e9se, hogy a RAML a t\u00e1rol\u00f3b\u00f3l helyes-e a specifik\u00e1ci\u00f3val szemben. T\u00f6bb eszk\u00f6zt is kipr\u00f3b\u00e1ltunk. Meglep\u0151 m\u00f3don mindegyik valamilyen k\u00fcl\u00f6nb\u00f6z\u0151 mar\u00f3 kifejez\u00e9ssel kritiz\u00e1lta a megjegyz\u00e9seinket. \u00c9s nem mindig megalapozottan :) .<\/p>\n<p>V\u00e9g\u00fcl egy elavult projektre esett a v\u00e1laszt\u00e1sunk, amely szint\u00e9n sz\u00e1mos probl\u00e9m\u00e1val k\u00fczd (n\u00e9ha a semmib\u0151l \u00f6sszeomlik, \u00e9s probl\u00e9m\u00e1i vannak a regul\u00e1ris kifejez\u00e9sekkel). \u00cdgy nem tal\u00e1ltunk m\u00f3dot a valid\u00e1l\u00e1s \u00e9s konvert\u00e1l\u00e1s feladatainak megold\u00e1s\u00e1ra ingyenes eszk\u00f6z\u00f6k seg\u00edts\u00e9g\u00e9vel, \u00e9s \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy kereskedelmi eszk\u00f6zt haszn\u00e1lunk. A j\u00f6v\u0151ben, amikor az OpenSource eszk\u00f6z\u00f6k kifinomultabb\u00e1 v\u00e1lnak, tal\u00e1n egyszer\u0171bb\u00e9 v\u00e1lik ennek a feladatnak a megold\u00e1sa. Jelenleg azonban a \u201efinomhangol\u00e1s\u201d munkaid\u0151 \u00e9s k\u00f6lts\u00e9g ig\u00e9nye jelent\u0151sebbnek t\u0171nt sz\u00e1munkra, mint a kereskedelmi szolg\u00e1ltat\u00e1s k\u00f6lts\u00e9ge.<\/p>\n<h3>Z\u00e1r\u00e1s<\/h3>\n<p>\nMindezek ut\u00e1n szeretn\u00e9nk megosztani tapasztalatainkat, \u00e9s megjegyezni, hogy az eszk\u00f6z kiv\u00e1laszt\u00e1sa el\u0151tt vil\u00e1gosan meg kell hat\u00e1rozni, mit v\u00e1runk el t\u0151le, \u00e9s mekkora k\u00f6lts\u00e9gvet\u00e9st vagyunk hajland\u00f3ak r\u00e1ford\u00edtani. Ha eltekint\u00fcnk az OpenSource megold\u00e1sokt\u00f3l, m\u00e1r most rengeteg szolg\u00e1ltat\u00e1s \u00e9s term\u00e9k l\u00e9tezik, amelyek seg\u00edthetnek a valid\u00e1l\u00e1sban, konvert\u00e1l\u00e1sban. De ezek dr\u00e1g\u00e1k, n\u00e9ha pedig nagyon dr\u00e1g\u00e1k. Egy nagy c\u00e9g sz\u00e1m\u00e1ra ezek a k\u00f6lts\u00e9gek elviselhet\u0151k, de egy startup sz\u00e1m\u00e1ra hatalmas terhet jelenthetnek.<\/p>\n<p>Hat\u00e1rozzon meg egy eszk\u00f6zk\u00e9szletet, amelyet k\u00e9s\u0151bb haszn\u00e1lni fog. P\u00e9ld\u00e1ul, ha csak a szerz\u0151d\u00e9st szeretn\u00e9 megjelen\u00edteni, a Swagger 2 haszn\u00e1lata egyszer\u0171bb lesz, mivel sz\u00e9p API-ja van, hiszen a RAML eset\u00e9ben saj\u00e1t mag\u00e1nak kell fel\u00e9p\u00edtenie \u00e9s karbantartania a szolg\u00e1ltat\u00e1st.<br \/>\nMin\u00e9l t\u00f6bb feladatot kell megoldania, ann\u00e1l nagyobb lesz az ig\u00e9ny az eszk\u00f6z\u00f6kre, \u00e9s ezek k\u00fcl\u00f6nb\u00f6z\u0151ek a k\u00fcl\u00f6nb\u00f6z\u0151 platformokon, ez\u00e9rt \u00e9rdemes el\u0151re megismerkedni a rendelkez\u00e9sre \u00e1ll\u00f3 verzi\u00f3kkal, hogy minimaliz\u00e1lja a j\u00f6v\u0151beli k\u00f6lts\u00e9geit.<\/p>\n<p>De el kell ismerni, hogy a ma l\u00e9tez\u0151 \u00f6kosziszt\u00e9m\u00e1k mind t\u00f6k\u00e9letlenek. Ez\u00e9rt, ha a c\u00e9gn\u00e9l vannak olyan rajong\u00f3k, akik a RAML-t kedvelik, mert \"rugalmass\u00e1got ad a gondolatok kifejez\u00e9s\u00e9ben\", vagy \u00e9ppen ellenkez\u0151leg, akik a Swaggert kedvelik, mert \"\u00e9rthet\u0151bb\", a legjobb, ha hagyjuk \u0151ket abban dolgozni, amiben megszokt\u00e1k, \u00e9s amit szeretn\u00e9nek, mert b\u00e1rmelyik form\u00e1tum eszk\u00f6zt\u00e1ra finom\u00edt\u00e1sra szorul. <\/p>\n<p>A mi tapasztalatainkr\u00f3l a k\u00f6vetkez\u0151 posztokban besz\u00e9lni fogunk arr\u00f3l, hogy milyen statikus \u00e9s dinamikus ellen\u0151rz\u00e9seket v\u00e9gz\u00fcnk a RAML-Swagger architekt\u00fara alapj\u00e1n, valamint arr\u00f3l, hogy milyen dokument\u00e1ci\u00f3t gener\u00e1lunk a szerz\u0151d\u00e9sekb\u0151l, \u00e9s hogyan m\u0171k\u00f6dik mindez.<\/p>\n<p class=\"for_users_only_msg\">Csak a regisztr\u00e1lt felhaszn\u00e1l\u00f3k vehetnek r\u00e9szt a szavaz\u00e1son. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">K\u00e9rem, jelentkezzen be.<\/a><\/noindex>, k\u00e9rem.<\/p>\n<h2 class=\"default-block__polling-title\">Milyen nyelvet haszn\u00e1lsz a mikroszolg\u00e1ltat\u00e1sok szerz\u0151d\u00e9seinek annot\u00e1l\u00e1s\u00e1hoz?<\/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 (m\u00e1s n\u00e9ven)<\/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>                    M\u00e1s<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Nem haszn\u00e1lok<\/p>\n<\/li>\n<\/ul>\n<p>    100 felhaszn\u00e1l\u00f3 szavazott. 24 felhaszn\u00e1l\u00f3 tart\u00f3zkodott.<br \/>\n<br \/>Forr\u00e1s: <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.3 - 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\/hu\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\udd47Teh\u00e1t RAML vagy OAS (Swagger)? | ProHoster","description":"A mikroszolg\u00e1ltat\u00e1sok dinamikus vil\u00e1g\u00e1ban b\u00e1rmi megv\u00e1ltozhat - b\u00e1rmely komponenst \u00e1t lehet \u00edrni egy m\u00e1sik nyelven, m\u00e1s keretrendszereket \u00e9s architekt\u00far\u00e1t haszn\u00e1lva.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/38022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=38022"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/38022\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/28540"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=38022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=38022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=38022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}