{"id":30792,"date":"2019-10-31T21:37:27","date_gmt":"2019-10-31T18:37:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/nash-opyt-sozdaniya-api-gateway\/"},"modified":"2019-10-31T21:37:27","modified_gmt":"2019-10-31T18:37:27","slug":"nash-opyt-sozdaniya-api-gateway","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/nash-opyt-sozdaniya-api-gateway","title":{"rendered":"Eksperienca jon\u00eb n\u00eb krijimin e API Gateway","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Disa kompani, p\u00ebrfshir\u00eb edhe klientin ton\u00eb, zhvillojn\u00eb produktin p\u00ebrmes nj\u00eb rrjeti partner\u00ebsh. P\u00ebr shembull, dyqanet e m\u00ebdha online jan\u00eb t\u00eb integruara me sh\u00ebrbimin e d\u00ebrges\u00ebs \u2014 ju b\u00ebni porosin\u00eb dhe s\u00eb shpejti merrni numrin e ndjekjes s\u00eb paket\u00ebs. Nj\u00eb shembull tjet\u00ebr \u2014 s\u00eb bashku me bilet\u00ebn tuaj t\u00eb fluturimit blini sigurimin ose bilet\u00ebn p\u00ebr aerop\u00ebrtin.<\/p>\n<p>P\u00ebr k\u00ebt\u00eb p\u00ebrdoret nj\u00eb API, i cili duhet t\u00eb jepet partner\u00ebve p\u00ebrmes API Gateway. K\u00ebt\u00eb detyr\u00eb e zgjodh\u00ebm ne. N\u00eb k\u00ebt\u00eb artikull do t\u00eb tregojm\u00eb detajet.<\/p>\n<p>Dhe: ekosistemi dhe portali i API-ve me nj\u00eb nd\u00ebrfaqe, ku p\u00ebrdoruesit jan\u00eb regjistruar, marrin informacion etj. Na nevojitet t\u00eb b\u00ebjm\u00eb nj\u00eb API Gateway t\u00eb p\u00ebrshtatsh\u00ebm dhe t\u00eb besuesh\u00ebm. N\u00eb procesin e krijimit na duhej t\u00eb siguronim <\/p>\n<ul>\n<li>regjistrimin, <\/li>\n<li>kontrollin e lidhjes me API, <\/li>\n<li>monitorimin e m\u00ebnyr\u00ebs si p\u00ebrdoruesit p\u00ebrdorin sistemin p\u00ebrfundimtar, <\/li>\n<li>raportimin e treguesve t\u00eb biznesit.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Eksperienca jon\u00eb n\u00eb krijimin e API Gateway\" src=\"\/wp-content\/uploads\/2019\/04\/4fa66fd4573af16b0bc78aa61173f907.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb k\u00ebt\u00eb artikull do t\u00eb flasim p\u00ebr p\u00ebrvoj\u00ebn ton\u00eb n\u00eb krijimin e API Gateway, gjat\u00eb s\u00eb cil\u00ebs ne zgjodh\u00ebm detyrat e m\u00ebposhtme:<\/p>\n<ul>\n<li>autentifikimi i p\u00ebrdoruesit,<\/li>\n<li>autorizimi i p\u00ebrdoruesit,<\/li>\n<li>modifikimi i k\u00ebrkes\u00ebs origjinale,<\/li>\n<li>proksimi i k\u00ebrkes\u00ebs,<\/li>\n<li>pasprocesimi i p\u00ebrgjigjes.<\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nKa dy lloje menaxhimi t\u00eb API-ve:<\/p>\n<p>1. Standard, i cili funksionon si m\u00eb posht\u00eb. Para lidhjes, p\u00ebrdoruesi teston kapacitetet, pastaj paguan dhe e integrojn\u00eb n\u00eb faqen e tij. N\u00eb p\u00ebrgjith\u00ebsi, ato p\u00ebrdoren nga bizneset e vogla dhe t\u00eb mesme.<\/p>\n<p>2. B2B i madh p\u00ebr Menaxhimin e API-ve, kur nj\u00eb kompani fillimisht merr nj\u00eb vendim t\u00eb biznesit p\u00ebr lidhjen, b\u00ebhet partner me kompanin\u00eb me nj\u00eb detyrim kontraktual, pas s\u00eb cil\u00ebs lidhet me API-n\u00eb. Dhe vet\u00ebm pasi t\u00eb zgjidhen t\u00eb gjitha formalitetet, kompania merr qasje testuese, kalon testimin dhe del n\u00eb prodhim. Por kjo nuk \u00ebsht\u00eb e mundur pa nj\u00eb vendim menaxherial p\u00ebr lidhjen. <\/p>\n<p><img decoding=\"async\" alt=\"Eksperienca jon\u00eb n\u00eb krijimin e API Gateway\" src=\"\/wp-content\/uploads\/2019\/04\/b9ab53d6c64d5a971c4950cd340ad42e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3> Zgjidhja jon\u00eb<\/h3>\n<p>\nN\u00eb k\u00ebt\u00eb pjes\u00eb do t\u00eb flasim p\u00ebr krijimin e API Gateway.<\/p>\n<p>P\u00ebrdoruesit e fundit t\u00eb port\u00ebs s\u00eb krijuar p\u00ebr API \u2014 partner\u00ebt e klientit ton\u00eb. P\u00ebr secilin prej tyre, ne tashm\u00eb mbajm\u00eb kontratat e nevojshme. Na nevojitet vet\u00ebm t\u00eb zgjeroni funksionalitetin, duke sh\u00ebnuar qasjen e dh\u00ebn\u00eb n\u00eb portal. P\u00ebrkat\u00ebsisht, nevojitet nj\u00eb proces i kontrolluar p\u00ebr lidhjen dhe menaxhimin.<\/p>\n<p>Sigurisht, mund t\u00eb ishte marr\u00eb ndonj\u00eb zgjidhje t\u00eb gatshme p\u00ebr t\u00eb zgjidhur detyr\u00ebn e Menaxhimit t\u00eb API-ve dhe krijimin e API Gateway, n\u00eb ve\u00e7anti. P\u00ebr shembull, nj\u00eb mund\u00ebsi e till\u00eb mund t\u00eb ishte<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/api-management\/\"> Azure API Management<\/a><\/noindex>. Na nuk e zgjodh\u00ebm, sepse n\u00eb rastin ton\u00eb ne kishim tashm\u00eb nj\u00eb portal API dhe nj\u00eb ekosistem t\u00eb madh t\u00eb nd\u00ebrtuar rreth tij. T\u00eb gjith\u00eb p\u00ebrdoruesit ishin regjistruar, ata e dinin tashm\u00eb se ku dhe si mund t\u00eb merrnin informacionin e nevojsh\u00ebm. N\u00eb portalin API ishin t\u00eb pranishme nd\u00ebrfaqet e nevojshme, na duhej vet\u00ebm nj\u00eb API Gateway. N\u00eb fakt, k\u00ebt\u00eb ne e filluam t\u00eb zhvillonim. <\/p>\n<p>Ajo q\u00eb ne e quajm\u00eb API Gateway \u00ebsht\u00eb nj\u00eb lloj proxy. K\u00ebtu s\u00ebrish kishim zgjedhjen \u2014 mund t\u00eb shkruanim nj\u00eb proxy tonin ose t\u00eb zgjidhnim di\u00e7ka q\u00eb tashm\u00eb ekzistonte. N\u00eb k\u00ebt\u00eb rast, ne e zgjodh\u00ebm rrug\u00ebn e dyt\u00eb dhe zgjodh\u00ebm kombinimin nginx+Lua. Pse? Na nevojitej nj\u00eb software i besuesh\u00ebm, i testuar, q\u00eb mb\u00ebshtetej p\u00ebr shkall\u00ebzim. Nuk donim t\u00eb kontrollonim pas realizimit as korrekt\u00ebsin\u00eb e logjik\u00ebs s\u00eb biznesit dhe as korrekt\u00ebsin\u00eb e funksionimit t\u00eb proxy-t\u00eb. <\/p>\n<p>\u00c7do server web ka nj\u00eb tubacione p\u00ebr trajtimin e k\u00ebrkesave. N\u00eb rastin e nginx, ai duket si m\u00eb posht\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Eksperienca jon\u00eb n\u00eb krijimin e API Gateway\" src=\"\/wp-content\/uploads\/2019\/04\/b4cba1d37cc769202f92df052b45c77e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n(schema nga <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openresty\/lua-nginx-module\">GitHub Lua Nginx<\/a><\/noindex>)<\/p>\n<p>Q\u00ebllimi yn\u00eb ishte t\u00eb integronim n\u00eb k\u00ebt\u00eb tubacion n\u00eb momentin kur mund t\u00eb modifikonim k\u00ebrkes\u00ebn origjinale. <\/p>\n<p>Ne duam t\u00eb krijojm\u00eb nj\u00eb proxy transparent, p\u00ebr t\u00eb siguruar q\u00eb k\u00ebrkesa funksionale t\u00eb mbetet ashtu si\u00e7 ka ardhur. Ne vet\u00ebm kontrollojm\u00eb aksesin n\u00eb API-n\u00eb p\u00ebrfundimtare, duke ndihmuar k\u00ebrkes\u00ebn t\u00eb arrij\u00eb aty. N\u00eb rast se k\u00ebrkesa ka qen\u00eb e pap\u00ebrshtatshme, gabimin duhet ta tregoj\u00eb API-ja p\u00ebrfundimtare, jo ne. Arsyet e vetme pse mund t\u00eb refuzojm\u00eb nj\u00eb k\u00ebrkes\u00eb jan\u00eb p\u00ebr shkak t\u00eb munges\u00ebs s\u00eb aksesit nga ana e klientit. <\/p>\n<p>P\u00ebr nginx tashm\u00eb ekziston <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openresty\/lua-nginx-module\">zgjerimi<\/a><\/noindex> n\u00eb <noindex><a rel=\"nofollow\" href=\"http:\/\/www.lua.ru\/\">Lua<\/a><\/noindex>. Lua \u00ebsht\u00eb nj\u00eb gjuh\u00eb skenari, shum\u00eb e leht\u00eb dhe e thjesht\u00eb p\u00ebr t'u m\u00ebsuar. K\u00ebshtu, logjik\u00ebn e nevojshme e kemi realizuar me ndihm\u00ebn e Lua. <\/p>\n<p>Konfigurimi i nginx (analoge me aplikacionin route), ku ndodh e gjith\u00eb puna, \u00ebsht\u00eb mjaft e qart\u00eb. \u00cbsht\u00eb e r\u00ebnd\u00ebsishme k\u00ebtu direktiva e fundit \u2014 post_action.<\/p>\n<pre><code class=\"nginx\">location \/middleware {\n      more_clear_input_headers Accept-Encoding;\n      lua_need_request_body on;\n      rewrite_by_lua_file 'middleware\/rewrite.lua';\n      access_by_lua_file 'middleware\/access.lua';\n      proxy_pass https:\/\/someurl.com;\n      body_filter_by_lua_file 'middleware\/body_filter.lua';\n      post_action \/process_session;\n}\n<\/code><\/pre>\n<p>\nLe t\u00eb shqyrtojm\u00eb \u00e7far\u00eb ndodh n\u00eb k\u00ebt\u00eb konfigurim: <br \/>\n<b>more_clear_input_headers<\/b> \u2014 pastron vler\u00ebn e header-eve t\u00eb specifikuara pas direktiv\u00ebs. <br \/>\n<b>lua_need_request_body <\/b>\u2014 rregullon n\u00ebse duhet lexuar trupi origjinal i k\u00ebrkes\u00ebs para se t\u00eb ekzekutohen direktivat rewrite\/access\/access_by_lua ose jo. N\u00eb m\u00ebnyr\u00eb default, nginx nuk e lexon trupin e k\u00ebrkes\u00ebs s\u00eb klientit, dhe n\u00ebse keni nevoj\u00eb t\u00eb keni akses n\u00eb t\u00eb, kjo direktiv\u00eb duhet t\u00eb ket\u00eb vler\u00ebn on.<br \/>\n<b>rewrite_by_lua_file<\/b> \u2014 rruga deri te skripti, ku p\u00ebrshkruhet logjika p\u00ebr modifikimin e k\u00ebrkes\u00ebs<br \/>\n<b>access_by_lua_file <\/b>\u2014 rruga deri te skripti, ku p\u00ebrshkruhet logjika q\u00eb kontrollon n\u00ebse ka akses n\u00eb burim. <br \/>\n<b>proxy_pass <\/b>\u2014 url, n\u00eb t\u00eb cilin do t\u00eb proxizohet k\u00ebrkesa.<br \/>\n<b>body_filter_by_lua_file <\/b>\u2014 rruga deri te skripti, ku p\u00ebrshkruhet logjika p\u00ebr filtrimin e k\u00ebrkes\u00ebs p\u00ebrpara se t'i kthehet klientit.<br \/>\nDhe, p\u00ebrfundimisht, <b>post_action<\/b> \u2014 nj\u00eb direktiv\u00eb zyrtarisht e pa dokumentuar, me t\u00eb cil\u00ebn mund t\u00eb kryhen edhe disa veprime t\u00eb tjera pasi p\u00ebrgjigjja t'i jepet klientit. <\/p>\n<p>M\u00eb pas do t\u00eb flasim n\u00eb rend, se si ne e zgjidh\u00ebm problemin ton\u00eb.<\/p>\n<h3>Autorizimi\/autentifikimi dhe modifikimi i k\u00ebrkes\u00ebs<\/h3>\n<p>\n<b>Autorizimi<\/b><\/p>\n<p>Autorizimin dhe autentifikimin e kemi nd\u00ebrtuar me an\u00eb t\u00eb qasjes p\u00ebrmes certifikatave. Ekziston nj\u00eb certifikat\u00eb rr\u00ebnj\u00ebsore. \u00c7do klient i ri i porosit\u00ebsit i gjenerohet nj\u00eb certifikat\u00eb personale, me t\u00eb cil\u00ebn ai mund t\u00eb qaset n\u00eb API. Kjo certifikat\u00eb konfigurohet n\u00eb seksionin server t\u00eb cil\u00ebsimeve t\u00eb nginx.<\/p>\n<pre><code class=\"nginx\">ssl on;\nssl_certificate \/usr\/local\/openresty\/nginx\/ssl\/cert.pem;\nssl_certificate_key \/usr\/local\/openresty\/nginx\/ssl\/cert.pem;\nssl_client_certificate \/usr\/local\/openresty\/nginx\/ssl\/ca.crt;\nssl_verify_client on;<\/code><\/pre>\n<p>\n<b>Modifikimi<\/b><\/p>\n<p>Mund t\u00eb lind\u00eb nj\u00eb pyetje e drejt\u00eb: \u00e7far\u00eb t\u00eb b\u00ebjm\u00eb me klientin e certifikuar, n\u00ebse papritur d\u00ebshirojm\u00eb ta shk\u00ebputim at\u00eb nga sistemi? A do t\u00eb rishpem\u00eb certifikatat p\u00ebr t\u00eb gjith\u00eb klient\u00ebt e tjer\u00eb? <\/p>\n<p>K\u00ebshtu, ne kaluam natyrsh\u00ebm n\u00eb detyr\u00ebn tjet\u00ebr \u2014 modifikimin e k\u00ebrkes\u00ebs origjinale. K\u00ebrkesa origjinale e klientit, n\u00eb fakt, nuk \u00ebsht\u00eb valide p\u00ebr sistemin p\u00ebrfundimtar. Nj\u00eb nga detyrat \u00ebsht\u00eb t\u00eb plot\u00ebsojm\u00eb n\u00eb k\u00ebrkes\u00eb pjes\u00ebt e nevojshme p\u00ebr ta b\u00ebr\u00eb at\u00eb t\u00eb zakonshme. Solucioni \u00ebsht\u00eb se t\u00eb dh\u00ebnat e duhura jan\u00eb t\u00eb ndryshme p\u00ebr \u00e7do klient. Ne e dim\u00eb se klienti vjen tek ne me nj\u00eb certifikat\u00eb, nga e cila mund t\u00eb marrim nj\u00eb gjurm\u00eb dhe t\u00eb nxjerrim nga baza t\u00eb dh\u00ebnat e nevojshme t\u00eb klientit. <\/p>\n<p>N\u00ebse n\u00eb nj\u00eb moment ndiheni t\u00eb nevojsh\u00ebm t\u00eb \u00e7aktivizoni klientin nga sh\u00ebrbimi yn\u00eb, t\u00eb dh\u00ebnat e tij do t\u00eb humbasin nga baza dhe ai nuk do t\u00eb mund t\u00eb b\u00ebj\u00eb asgj\u00eb. <\/p>\n<h3>Puna me t\u00eb dh\u00ebnat e klientit<\/h3>\n<p>\nNa duhej t\u00eb siguronim nj\u00eb disponueshm\u00ebri t\u00eb lart\u00eb t\u00eb zgjidhjes, sidomos p\u00ebr m\u00ebnyr\u00ebn si marrim t\u00eb dh\u00ebnat e klientit. Komplikimi \u00ebsht\u00eb se burimi i par\u00eb i k\u00ebtyre t\u00eb dh\u00ebnave \u00ebsht\u00eb nj\u00eb sh\u00ebrbim i jasht\u00ebm, i cili nuk garanton disponueshm\u00ebri t\u00eb pand\u00ebrprer\u00eb dhe nj\u00eb shpejt\u00ebsi mjaft t\u00eb lart\u00eb pune. <\/p>\n<p>P\u00ebr k\u00ebt\u00eb arsye, na duhej t\u00eb siguronim nj\u00eb disponueshm\u00ebri t\u00eb lart\u00eb t\u00eb t\u00eb dh\u00ebnave t\u00eb klient\u00ebve. Si mjet zgjodh\u00ebm <noindex><a rel=\"nofollow\" href=\"https:\/\/hazelcast.org\/\">Hazelcast<\/a><\/noindex>, i cili na ofron:<\/p>\n<ul>\n<li>akses t\u00eb shpejt\u00eb n\u00eb t\u00eb dh\u00ebna,<\/li>\n<li>mund\u00ebsin\u00eb p\u00ebr t\u00eb organizuar nj\u00eb klaster prej disa nodave me t\u00eb dh\u00ebna t\u00eb replikura n\u00eb nod t\u00eb ndrysh\u00ebm.<\/li>\n<\/ul>\n<p>\nNe shkuam me strategjin\u00eb m\u00eb t\u00eb thjesht\u00eb p\u00ebr d\u00ebrgimin e t\u00eb dh\u00ebnave n\u00eb k\u00ebsh:<\/p>\n<p><img decoding=\"async\" alt=\"Eksperienca jon\u00eb n\u00eb krijimin e API Gateway\" src=\"\/wp-content\/uploads\/2019\/04\/0175d6f0fda543566ab13d4cae9d8cc1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPuna me sistemin p\u00ebrfundimtar ndodh brenda seancave dhe ka nj\u00eb limit n\u00eb numrin maksimal. N\u00ebse klienti nuk e mbyll seanc\u00ebn, k\u00ebt\u00eb do t\u00eb duhet ta b\u00ebjm\u00eb ne. <\/p>\n<p>T\u00eb dh\u00ebnat p\u00ebr sesionin e hapur vijn\u00eb nga sistemi p\u00ebrfundimtar dhe fillimisht p\u00ebrpunohen n\u00eb an\u00ebn e Lua. Ne vendos\u00ebm t\u00eb p\u00ebrdorim Hazelcast p\u00ebr t\u00eb ruajtur k\u00ebto t\u00eb dh\u00ebna me nj\u00eb pun\u00eb q\u00eb \u00ebsht\u00eb shkruar n\u00eb .NET. M\u00eb pas, me nj\u00eb periudh\u00eb t\u00eb caktuar, ne kontrollojm\u00eb t\u00eb drejt\u00ebn p\u00ebr jet\u00ebn e sesioneve t\u00eb hapura dhe mbyllim ato q\u00eb jan\u00eb skaduar. <\/p>\n<h3>Qasja n\u00eb Hazelcast \u00ebsht\u00eb e mundur si nga Lua ashtu edhe nga .NET<\/h3>\n<p>\nNuk ka klient\u00eb p\u00ebr Lua p\u00ebr t\u00eb punuar me Hazelcast, por Hazelcast ka nj\u00eb REST API, t\u00eb cilin ne vendos\u00ebm ta p\u00ebrdorim. P\u00ebr .NET ka <noindex><a rel=\"nofollow\" href=\"https:\/\/hazelcast.org\/clients\/net\/\">n\u00eb C \u2014 ai merret ekskluzivisht me detyrat DNS.<\/a><\/noindex>, p\u00ebrmes t\u00eb cilit ne planifikonim t\u00eb merrnim qasje n\u00eb t\u00eb dh\u00ebnat e Hazelcast n\u00eb an\u00ebn e .NET. Por gj\u00ebrat nuk shkuan k\u00ebshtu.<\/p>\n<p><img decoding=\"async\" alt=\"Eksperienca jon\u00eb n\u00eb krijimin e API Gateway\" src=\"\/wp-content\/uploads\/2019\/04\/52c9437e5cd16073b56afc55a4f415da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKur ruhet t\u00eb dh\u00ebna p\u00ebrmes REST dhe nxirren p\u00ebrmes klientit .NET, p\u00ebrdoren serializues dhe deserializues t\u00eb ndrysh\u00ebm. Prandaj, nuk \u00ebsht\u00eb e mundur t\u00eb ruhen t\u00eb dh\u00ebnat p\u00ebrmes REST dhe t\u00eb dalin p\u00ebrmes klientit .NET dhe anasjelltas. <\/p>\n<p>N\u00ebse ka interes t\u00eb shqyrtohet kjo, ne do t\u00eb flasim m\u00eb shum\u00eb p\u00ebr k\u00ebt\u00eb problem n\u00eb nj\u00eb artikull t\u00eb ve\u00e7ant\u00eb. Spoiler \u2014 n\u00eb skem\u00ebn. <\/p>\n<p><img decoding=\"async\" alt=\"Eksperienca jon\u00eb n\u00eb krijimin e API Gateway\" src=\"\/wp-content\/uploads\/2019\/04\/73bb11214fdaeca86ef10cdbd788e288.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Logimi dhe monitorimi<\/h3>\n<p>\nStandarti yn\u00eb korporativ p\u00ebr logimin n\u00ebp\u00ebrmjet .NET \u00ebsht\u00eb Serilog, t\u00eb gjitha loget p\u00ebrfundojn\u00eb n\u00eb Elasticsearch, dhe analizohemi ato n\u00ebp\u00ebrmjet Kibana. D\u00ebshironim t\u00eb b\u00ebnim di\u00e7ka t\u00eb ngjashme edhe n\u00eb k\u00ebt\u00eb rast. Vet\u00ebm <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/DhavalKapil\/elasticsearch-lua\">n\u00eb C \u2014 ai merret ekskluzivisht me detyrat DNS.<\/a><\/noindex> p\u00ebr t\u00eb punuar me Elastic n\u00eb Lua, i cili u gjet, u prish gjat\u00eb k\u00ebrkes\u00ebs s\u00eb par\u00eb. Ne p\u00ebrdor\u00ebm Fluentd. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.fluentd.org\/\">Fluentd<\/a><\/noindex> \u2014 nj\u00eb zgjidhje open source p\u00ebr t\u00eb siguruar nj\u00eb shtres\u00eb unike p\u00ebr logimin e aplikacioneve. Lejon mbledhjen e logeve nga nivele t\u00eb ndryshme t\u00eb aplikacionit dhe m\u00eb pas t'i transmetoj\u00eb ato n\u00eb nj\u00eb burim t\u00eb vet\u00ebm. <\/p>\n<p>API Gateway funksionon n\u00eb K8S, prandaj vendos\u00ebm t\u00eb shtojm\u00eb nj\u00eb kontejner me fluentd n\u00eb t\u00eb nj\u00ebjt\u00ebn pod p\u00ebr t\u00eb shkruar log\u00ebt n\u00eb portin tcp t\u00eb hapur t\u00eb fluentd. <\/p>\n<p>Ne gjithashtu hulumtuam se si do t\u00eb sillet fluentd n\u00ebse nuk do t\u00eb kishte lidhje me Elasticsearch. gjat\u00eb dy dit\u00ebve t\u00eb vazhdueshme, n\u00eb gateway vazhdonin t\u00eb vijn\u00eb k\u00ebrkesa, log\u00ebt d\u00ebrgoheshin n\u00eb fluentd, por IP-ja e Elastic ishte e bllokuar. Pas rikthimit t\u00eb lidhjes, fluentd kaloi t\u00eb gjitha log\u00ebt n\u00eb Elastic.<\/p>\n<h3>P\u00ebrfundimi<\/h3>\n<p>\nQasja e zgjedhur p\u00ebr implementim na lejoi t\u00eb ofronim nj\u00eb produkt n\u00eb funksion n\u00eb ambientin e prodhimit brenda vet\u00ebm 2.5 muajsh.<\/p>\n<p>N\u00ebse ndonj\u00ebher\u00eb do t\u00eb angazhoheni me gj\u00ebra t\u00eb tilla, rekomandojm\u00eb q\u00eb s\u00eb pari t\u00eb kuptoni qart\u00eb se \u00e7far\u00eb detyre po zgjidhni dhe \u00e7far\u00eb burimesh keni tashm\u00eb. B\u00ebni kujdes me v\u00ebshtir\u00ebsit\u00eb e integrimit me sistemet ekzistuese t\u00eb menaxhimit t\u00eb API-ve. <\/p>\n<p>P\u00ebrpiquni t\u00eb kuptoni \u00e7far\u00eb sakt\u00ebsisht do t\u00eb zhvilloni \u2014 vet\u00ebm logjik\u00ebn e biznesit p\u00ebr trajtimin e k\u00ebrkesave, ose, si\u00e7 mund t\u00eb ishte rasti yn\u00eb, nj\u00eb proxy t\u00eb plot\u00eb. Mos harroni, gjith\u00e7ka q\u00eb do t\u00eb b\u00ebni vet\u00eb duhet t\u00eb testohet me kujdes m\u00eb pas.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/true_engineering\/blog\/446438\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430\u0448 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0441\u043a\u0443\u044e \u0441\u0435\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441\u043e \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u2014 \u0432\u044b \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u0442\u043e\u0432\u0430\u0440 \u0438 \u0432\u0441\u043a\u043e\u0440\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0442\u0440\u0435\u043a\u0438\u043d\u0433\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0441\u044b\u043b\u043a\u0438. \u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0430\u0432\u0438\u0430\u0431\u0438\u043b\u0435\u0442\u043e\u043c \u0432\u044b \u043f\u043e\u043a\u0443\u043f\u0430\u0435\u0442\u0435 \u0441\u0442\u0440\u0430\u0445\u043e\u0432\u043a\u0443 \u0438\u043b\u0438 \u0431\u0438\u043b\u0435\u0442 \u043d\u0430 \u0430\u044d\u0440\u043e\u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d API, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0430\u043c \u0447\u0435\u0440\u0435\u0437 API Gateway. \u042d\u0442\u0443 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":22777,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30792","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=\"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430\u0448 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0441\u043a\u0443\u044e \u0441\u0435\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441\u043e \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u2014 \u0432\u044b \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u0442\u043e\u0432\u0430\u0440 \u0438 \u0432\u0441\u043a\u043e\u0440\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0442\u0440\u0435\u043a\u0438\u043d\u0433\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0441\u044b\u043b\u043a\u0438. \u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0430\u0432\u0438\u0430\u0431\u0438\u043b\u0435\u0442\u043e\u043c \u0432\u044b \u043f\u043e\u043a\u0443\u043f\u0430\u0435\u0442\u0435 \u0441\u0442\u0440\u0430\u0445\u043e\u0432\u043a\u0443 \u0438\u043b\u0438 \u0431\u0438\u043b\u0435\u0442 \u043d\u0430 \u0430\u044d\u0440\u043e\u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d API, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0430\u043c \u0447\u0435\u0440\u0435\u0437 API Gateway. \u042d\u0442\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\/sq\/blog\/administrirovanie\/nash-opyt-sozdaniya-api-gateway\" \/>\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\u041d\u0430\u0448 \u043e\u043f\u044b\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f API Gateway | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430\u0448 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0441\u043a\u0443\u044e \u0441\u0435\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441\u043e \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u2014 \u0432\u044b \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u0442\u043e\u0432\u0430\u0440 \u0438 \u0432\u0441\u043a\u043e\u0440\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0442\u0440\u0435\u043a\u0438\u043d\u0433\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0441\u044b\u043b\u043a\u0438. \u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0430\u0432\u0438\u0430\u0431\u0438\u043b\u0435\u0442\u043e\u043c \u0432\u044b \u043f\u043e\u043a\u0443\u043f\u0430\u0435\u0442\u0435 \u0441\u0442\u0440\u0430\u0445\u043e\u0432\u043a\u0443 \u0438\u043b\u0438 \u0431\u0438\u043b\u0435\u0442 \u043d\u0430 \u0430\u044d\u0440\u043e\u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d API, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0430\u043c \u0447\u0435\u0440\u0435\u0437 API Gateway. \u042d\u0442\u0443\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/nash-opyt-sozdaniya-api-gateway\" \/>\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-31T18:37:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:37:27+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\udd47Eksperienca jon\u00eb n\u00eb krijimin e API Gateway | ProHoster","description":"Disa kompani, p\u00ebrfshir\u00eb klientin ton\u00eb, zhvillojn\u00eb produktin p\u00ebrmes nj\u00eb rrjeti partner\u00ebsh. P\u00ebr shembull, dyqanet e m\u00ebdha n\u00eb internet jan\u00eb t\u00eb integruara me sh\u00ebrbimin e dor\u00ebzimit \u2014 ju porositni nj\u00eb produkt dhe shpejt merrni nj\u00eb num\u00ebr ndjekjeje p\u00ebr pakon tuaj. Nj\u00eb shembull tjet\u00ebr \u2014 s\u00eb bashku me bilet\u00ebn e avionit, blini sigurimin ose bilet\u00ebn p\u00ebr aeroshpjeguesin. P\u00ebrdoret nj\u00eb API i vet\u00ebm, i cili duhet t'u jepet partner\u00ebve p\u00ebrmes API Gateway. Ky","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/nash-opyt-sozdaniya-api-gateway","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\u041d\u0430\u0448 \u043e\u043f\u044b\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f API Gateway | ProHoster","og:description":"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430\u0448 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0441\u043a\u0443\u044e \u0441\u0435\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441\u043e \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u2014 \u0432\u044b \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u0442\u043e\u0432\u0430\u0440 \u0438 \u0432\u0441\u043a\u043e\u0440\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0442\u0440\u0435\u043a\u0438\u043d\u0433\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0441\u044b\u043b\u043a\u0438. \u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0430\u0432\u0438\u0430\u0431\u0438\u043b\u0435\u0442\u043e\u043c \u0432\u044b \u043f\u043e\u043a\u0443\u043f\u0430\u0435\u0442\u0435 \u0441\u0442\u0440\u0430\u0445\u043e\u0432\u043a\u0443 \u0438\u043b\u0438 \u0431\u0438\u043b\u0435\u0442 \u043d\u0430 \u0430\u044d\u0440\u043e\u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d API, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0430\u043c \u0447\u0435\u0440\u0435\u0437 API Gateway. \u042d\u0442\u0443","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/nash-opyt-sozdaniya-api-gateway","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-31T18:37:27+00:00","article:modified_time":"2019-10-31T18:37:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30792","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-21 03:01:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:05:31","updated":"2026-01-21 03:01:22","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\/30792","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=30792"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/30792\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/22777"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=30792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=30792"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=30792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}