{"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\/de\/blog\/administrirovanie\/nash-opyt-sozdaniya-api-gateway","title":{"rendered":"Unsere Erfahrung mit der Erstellung eines API Gateways","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Einige Unternehmen, darunter unser Kunde, entwickeln ihr Produkt \u00fcber ein Partnernetzwerk. Zum Beispiel sind gro\u00dfe Online-Shops mit dem Lieferservice integriert \u2013 Sie bestellen ein Produkt und erhalten kurz darauf eine Sendungsverfolgungsnummer. Ein weiteres Beispiel ist die Buchung einer Versicherung oder eines Tickets f\u00fcr den Flughafentransfer zusammen mit Ihrem Flugticket.<\/p>\n<p>Hierf\u00fcr wird eine API verwendet, die den Partnern \u00fcber das API-Gateway bereitgestellt werden muss. Diese Aufgabe haben wir erfolgreich gel\u00f6st. In diesem Artikel geben wir detaillierte Informationen dazu.<\/p>\n<p>Gegeben: ein \u00d6kosystem und ein API-Portal mit einer Benutzeroberfl\u00e4che, in der Nutzer registriert sind und Informationen erhalten. Wir m\u00fcssen ein benutzerfreundliches und zuverl\u00e4ssiges API-Gateway erstellen. Dabei mussten wir sicherstellen, <\/p>\n<ul>\n<li>die Registrierung, <\/li>\n<li>die Kontrolle der Verbindung zur API, <\/li>\n<li>die \u00dcberwachung, wie die Nutzer das Endsystem verwenden, <\/li>\n<li>die Erfassung von Gesch\u00e4ftskennzahlen.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Unsere Erfahrung mit der Erstellung eines API Gateways\" src=\"\/wp-content\/uploads\/2019\/04\/4fa66fd4573af16b0bc78aa61173f907.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn diesem Artikel berichten wir von unserer Erfahrung bei der Erstellung des API-Gateways, w\u00e4hrend wir die folgenden Herausforderungen bew\u00e4ltigt haben:<\/p>\n<ul>\n<li>die Benutzerautorisierung,<\/li>\n<li>die Benutzerautorisierung,<\/li>\n<li>die Modifikation der urspr\u00fcnglichen Anfrage,<\/li>\n<li>das Proxying der Anfrage,<\/li>\n<li>die Nachbearbeitung der Antwort.<\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEs gibt zwei Arten des API-Managements:<\/p>\n<p>1. Standardl\u00f6sung, die wie folgt funktioniert. Vor der Verbindung testet der Nutzer die M\u00f6glichkeiten, bezahlt und integriert die L\u00f6sung in seine Webseite. Dies wird h\u00e4ufig im kleinen und mittleren Unternehmen verwendet.<\/p>\n<p>2. Gro\u00dfes B2B API-Management, bei dem das Unternehmen zun\u00e4chst eine gesch\u00e4ftliche Entscheidung zur Anbindung trifft, Partner wird und vertragliche Verpflichtungen eingeht, bevor es sich mit der API verbindet. Nachdem alle Formalit\u00e4ten gekl\u00e4rt sind, erh\u00e4lt das Unternehmen Zugang zum Test und durchl\u00e4uft die Testphase, um schlie\u00dflich in den produktiven Betrieb zu gehen. Dies ist jedoch ohne eine Managemententscheidung zur Anbindung nicht m\u00f6glich. <\/p>\n<p><img decoding=\"async\" alt=\"Unsere Erfahrung mit der Erstellung eines API Gateways\" src=\"\/wp-content\/uploads\/2019\/04\/b9ab53d6c64d5a971c4950cd340ad42e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3> Unsere L\u00f6sung<\/h3>\n<p>\nIn diesem Abschnitt erl\u00e4utern wir die Erstellung eines API-Gateways.<\/p>\n<p>Die Endnutzer des generierten API-Gateways sind Partner unseres Kunden. F\u00fcr jeden von ihnen haben wir bereits die erforderlichen Vertr\u00e4ge gespeichert. Wir m\u00fcssen lediglich die Funktionalit\u00e4t erweitern, indem wir den bereitgestellten Zugang zum Gateway markieren. Dementsprechend ist ein kontrollierter Anschluss- und Verwaltungsprozess erforderlich.<\/p>\n<p>Selbstverst\u00e4ndlich h\u00e4tte man auch eine fertige L\u00f6sung f\u00fcr die Aufgabe des API-Managements und die Erstellung eines API-Gateways in Betracht ziehen k\u00f6nnen. Ein Beispiel hierf\u00fcr k\u00f6nnte sein,<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/api-management\/\"> Azure API Management<\/a><\/noindex>. Es war f\u00fcr uns nicht geeignet, da wir bereits ein API-Portal und ein umfassendes \u00d6kosystem darum herum hatten. Alle Nutzer waren bereits registriert und wussten, wo und wie sie die ben\u00f6tigten Informationen erhalten konnten. Im API-Portal existierten bereits die erforderlichen Schnittstellen, wir ben\u00f6tigten lediglich ein API-Gateway. Damit befassten wir uns dann auch. <\/p>\n<p>Was wir als API-Gateway bezeichnen, ist eine Art Proxy. Hier hatten wir erneut die Wahl \u2014 entweder einen eigenen Proxy zu schreiben oder eine bereits vorhandene L\u00f6sung zu w\u00e4hlen. In diesem Fall entschieden wir uns f\u00fcr Letzteres und w\u00e4hlten die Kombination aus nginx und Lua. Warum? Wir ben\u00f6tigten zuverl\u00e4ssige, getestete Software, die Skalierung unterst\u00fctzt. Nach der Implementierung wollten wir weder die Gesch\u00e4ftslogik noch die Funktionsweise des Proxys \u00fcberpr\u00fcfen m\u00fcssen. <\/p>\n<p>Jeder Webserver hat ein Anfrageverarbeitungs-Pipeline. Im Fall von nginx sieht sie folgenderma\u00dfen aus:<\/p>\n<p><img decoding=\"async\" alt=\"Unsere Erfahrung mit der Erstellung eines API Gateways\" src=\"\/wp-content\/uploads\/2019\/04\/b4cba1d37cc769202f92df052b45c77e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n(Diagramm aus <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openresty\/lua-nginx-module\">GitHub Lua Nginx<\/a><\/noindex>)<\/p>\n<p>Unser Ziel war es, uns in diese Pipeline an dem Punkt einzuf\u00fcgen, an dem wir die urspr\u00fcngliche Anfrage modifizieren konnten. <\/p>\n<p>Wir m\u00f6chten einen transparenten Proxy einrichten, damit die Anfrage funktional so bleibt, wie sie eingegangen ist. Wir kontrollieren lediglich den Zugang zur endg\u00fcltigen API und unterst\u00fctzen die Anfrage auf dem Weg dorthin. Sollte die Anfrage fehlerhaft sein, muss der Fehler von der endg\u00fcltigen API angezeigt werden, nicht von uns. Der einzige Grund, aus dem wir eine Anfrage ablehnen k\u00f6nnen, ist, wenn der Kunde keinen Zugang hat. <\/p>\n<p>F\u00fcr nginx existiert bereits <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openresty\/lua-nginx-module\">Erweiterung<\/a><\/noindex> findet man <noindex><a rel=\"nofollow\" href=\"http:\/\/www.lua.ru\/\">Lua<\/a><\/noindex>. Lua ist eine leichtgewichtige Skriptsprache, die einfach zu erlernen ist. Daher haben wir die ben\u00f6tigte Logik mit Lua umgesetzt. <\/p>\n<p>Die Konfiguration von nginx (analog zu einer Route in einer Anwendung), in der die gesamte Arbeit verrichtet wird, ist recht verst\u00e4ndlich. Besonders hervorzuheben ist hier die letzte Direktive \u2013 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>\nSchauen wir uns an, was in dieser Konfiguration geschieht: <br \/>\n<b>more_clear_input_headers<\/b> \u2013 entfernt den Wert der nach der Direktive angegebenen Header. <br \/>\n<b>lua_need_request_body <\/b>\u2014 regelt, ob der urspr\u00fcngliche Anfragek\u00f6rper gelesen werden soll, bevor die Direktiven rewrite\/access\/access_by_lua ausgef\u00fchrt werden. Standardm\u00e4\u00dfig liest nginx den K\u00f6rper der Kundenanfrage nicht. Um darauf zugreifen zu k\u00f6nnen, muss diese Direktive auf on gesetzt werden.<br \/>\n<b>rewrite_by_lua_file<\/b> \u2014 Pfad zur Skriptdatei, in der die Logik zur Modifikation der Anfrage beschrieben wird.<br \/>\n<b>access_by_lua_file <\/b>\u2014 Pfad zur Skriptdatei, in der die Logik beschrieben wird, die den Zugriff auf die Ressource \u00fcberpr\u00fcft. <br \/>\n<b>proxy_pass <\/b>\u2014 URL, an die die Anfrage weitergeleitet wird.<br \/>\n<b>body_filter_by_lua_file <\/b>\u2014 Pfad zur Skriptdatei, in der die Logik zur Filterung der Anfrage vor der R\u00fcckgabe an den Kunden beschrieben wird.<br \/>\nUnd schlie\u00dflich, <b>post_action<\/b> \u2014 offiziell nicht dokumentierte Direktive, mit der weitere Aktionen ausgef\u00fchrt werden k\u00f6nnen, nachdem die Antwort an den Kunden gegeben wurde. <\/p>\n<p>Im Folgenden erl\u00e4utern wir Schritt f\u00fcr Schritt, wie wir unsere Aufgaben gel\u00f6st haben.<\/p>\n<h3>Autorisierung\/Authentifizierung und Modifikation der Anfrage<\/h3>\n<p>\n<b>Autorisierung<\/b><\/p>\n<p>Die Autorisierung und Authentifizierung erfolgt \u00fcber Zertifikatszug\u00e4nge. Es gibt ein Wurzelzertifikat. F\u00fcr jeden neuen Kunden wird ein pers\u00f6nliches Zertifikat generiert, mit dem er Zugriff auf die API erh\u00e4lt. Dieses Zertifikat wird im Abschnitt server der nginx-Einstellungen konfiguriert.<\/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>Modifikation<\/b><\/p>\n<p>Eine berechtigte Frage k\u00f6nnte sein: Was passiert mit dem zertifizierten Kunden, wenn wir ihn pl\u00f6tzlich vom System trennen m\u00f6chten? Es w\u00e4re ja nicht sinnvoll, f\u00fcr alle anderen Kunden die Zertifikate neu auszustellen. <\/p>\n<p>So sind wir sanft zur n\u00e4chsten Aufgabe \u00fcbergegangen \u2013 die Modifikation der urspr\u00fcnglichen Anfrage. Die urspr\u00fcngliche Anfrage des Kunden ist grunds\u00e4tzlich nicht g\u00fcltig f\u00fcr das finale System. Eine der Aufgaben besteht darin, die fehlenden Teile in die Anfrage einzuf\u00fcgen, um sie g\u00fcltig zu machen. Der Clou dabei ist, dass die fehlenden Daten f\u00fcr jeden Kunden unterschiedlich sind. Wir wissen, dass der Kunde mit einem Zertifikat zu uns kommt, von dem wir den Fingerabdruck nehmen und die erforderlichen Kundendaten aus der Datenbank abrufen k\u00f6nnen. <\/p>\n<p>Wenn es irgendwann erforderlich ist, einen Kunden von unserem Dienst zu trennen, werden seine Daten aus der Datenbank gel\u00f6scht und er kann nichts mehr tun. <\/p>\n<h3>Umgang mit Kundendaten<\/h3>\n<p>\nWir mussten eine hohe Verf\u00fcgbarkeit der L\u00f6sung sicherstellen, insbesondere wie wir auf die Kundendaten zugreifen. Die Herausforderung besteht darin, dass die urspr\u00fcngliche Quelle dieser Daten ein Drittanbieter-Dienst ist, der keine durchgehende und ausreichend hohe Leistung garantiert. <\/p>\n<p>Daher mussten wir eine hohe Verf\u00fcgbarkeit der Kundendaten gew\u00e4hrleisten. Als Werkzeug haben wir uns f\u00fcr <noindex><a rel=\"nofollow\" href=\"https:\/\/hazelcast.org\/\">Hazelcast<\/a><\/noindex>, das uns Folgendes bietet:<\/p>\n<ul>\n<li>schnellen Zugriff auf die Daten,<\/li>\n<li>und die M\u00f6glichkeit, ein Cluster aus mehreren Nodes mit replizierten Daten auf verschiedenen Nodes einzurichten.<\/li>\n<\/ul>\n<p>\nWir haben den einfachsten Ansatz zur Bereitstellung von Daten im Cache gew\u00e4hlt:<\/p>\n<p><img decoding=\"async\" alt=\"Unsere Erfahrung mit der Erstellung eines API Gateways\" src=\"\/wp-content\/uploads\/2019\/04\/0175d6f0fda543566ab13d4cae9d8cc1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Arbeit mit dem Endsystem erfolgt im Rahmen von Sitzungen, und es gibt eine Begrenzung f\u00fcr die maximale Anzahl. Wenn der Kunde die Sitzung jedoch nicht schlie\u00dft, m\u00fcssen wir dies tun. <\/p>\n<p>Die Informationen \u00fcber offene Sitzungen kommen vom Endger\u00e4t und werden zun\u00e4chst auf der Lua-Seite verarbeitet. Wir haben uns entschieden, Hazelcast f\u00fcr die Speicherung dieser Daten zu verwenden, und daf\u00fcr ein Job in .NET geschrieben. In regelm\u00e4\u00dfigen Abst\u00e4nden \u00fcberpr\u00fcfen wir die Lebensf\u00e4higkeit der offenen Sitzungen und schlie\u00dfen abgelaufene. <\/p>\n<h3>Zugang zu Hazelcast sowohl aus Lua als auch aus .NET<\/h3>\n<p>\nEs gibt keine Lua-Clients f\u00fcr die Arbeit mit Hazelcast, aber Hazelcast bietet eine REST-API, die wir genutzt haben. F\u00fcr .NET gibt es <noindex><a rel=\"nofollow\" href=\"https:\/\/hazelcast.org\/clients\/net\/\">einen Client<\/a><\/noindex>, \u00fcber den wir Zugriff auf die Hazelcast-Daten auf der .NET-Seite planen. Aber das stellte sich als problematisch heraus.<\/p>\n<p><img decoding=\"async\" alt=\"Unsere Erfahrung mit der Erstellung eines API Gateways\" src=\"\/wp-content\/uploads\/2019\/04\/52c9437e5cd16073b56afc55a4f415da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBei der Speicherung von Daten \u00fcber REST und der Auslese \u00fcber den .NET-Client kommen unterschiedliche Serialisierer\/Deserialisierer zum Einsatz. Daher ist es nicht m\u00f6glich, Daten \u00fcber REST zu speichern und sie \u00fcber den .NET-Client abzurufen und umgekehrt. <\/p>\n<p>Wenn es Interessierte gibt, k\u00f6nnen wir in einem separaten Artikel detaillierter \u00fcber dieses Problem berichten. Spoiler \u2014 in der Skizze. <\/p>\n<p><img decoding=\"async\" alt=\"Unsere Erfahrung mit der Erstellung eines API Gateways\" src=\"\/wp-content\/uploads\/2019\/04\/73bb11214fdaeca86ef10cdbd788e288.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Protokollierung und \u00dcberwachung<\/h3>\n<p>\nUnser Unternehmensstandard f\u00fcr die Protokollierung \u00fcber .NET ist Serilog, alle Protokolle gelangen schlie\u00dflich in Elasticsearch, und die Analyse erfolgt \u00fcber Kibana. \u00c4hnliches wollten wir auch in diesem Fall erreichen. Das einzige <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/DhavalKapil\/elasticsearch-lua\">einen Client<\/a><\/noindex> f\u00fcr die Arbeit mit Elastic auf Lua, das gefunden wurde, brach beim ersten require. Und wir nutzten Fluentd. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.fluentd.org\/\">Fluentd<\/a><\/noindex> ist eine Open-Source-L\u00f6sung, die eine einheitliche Protokollierungsschicht f\u00fcr Anwendungen bereitstellt. Sie erm\u00f6glicht das Sammeln von Logs aus verschiedenen Anwendungsschichten und deren Kategorisierung in einer zentralen Quelle. <\/p>\n<p>Die API-Gateway funktioniert in K8S, weshalb wir beschlossen haben, einen Container mit Fluentd in dasselbe Pod hinzuzuf\u00fcgen, um Logs in den vorhandenen offenen TCP-Port von Fluentd zu schreiben. <\/p>\n<p>Wir haben auch untersucht, wie sich Fluentd verhalten w\u00fcrde, wenn keine Verbindung zu Elasticsearch besteht. \u00dcber einen Zeitraum von zwei Tagen gingen kontinuierlich Anfragen an das Gateway, Fluentd erhielt Logs, aber die IP von Elastic war gesperrt. Nach der Wiederherstellung der Verbindung \u00fcbertrug Fluentd alle Logs einwandfrei nach Elastic.<\/p>\n<h3>Fazit<\/h3>\n<p>\nDer gew\u00e4hlte Implementierungsansatz erm\u00f6glichte es uns, ein funktionierendes Produkt in einer Produktionsumgebung in nur 2,5 Monaten zu liefern.<\/p>\n<p>Sollten Sie jemals mit \u00e4hnlichen Dingen zu tun haben, empfehlen wir, zuerst klar zu verstehen, welches Problem Sie l\u00f6sen und welche Ressourcen Ihnen bereits zur Verf\u00fcgung stehen. Achten Sie auf die Herausforderungen der Integration mit bestehenden API-Management-Systemen. <\/p>\n<p>Verstehen Sie f\u00fcr sich selbst, was genau Sie entwickeln m\u00f6chten \u2013 lediglich die Gesch\u00e4ftslogik zur Verarbeitung von Anfragen oder, wie in unserem Fall, das gesamte Proxy. Vergessen Sie nicht, dass alles, was Sie selbst erstellen, anschlie\u00dfend gr\u00fcndlich getestet werden muss.<br \/>\n<br \/>Quelle: <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 4.9.10 - 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\/de\/blog\/administrirovanie\/nash-opyt-sozdaniya-api-gateway\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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\udd47Unsere Erfahrung mit der Erstellung von API Gateways | ProHoster","description":"Einige Unternehmen, einschlie\u00dflich unseres Kunden, entwickeln Produkte \u00fcber ein Partnernetzwerk. Zum Beispiel sind gro\u00dfe Online-Shops mit Lieferservices integriert \u2013 Sie bestellen ein Produkt und erhalten bald eine Sendungsverfolgungsnummer. Ein weiteres Beispiel \u2013 zusammen mit Ihrem Flugticket kaufen Sie eine Versicherung oder ein Ticket f\u00fcr den Airport-Express. Daf\u00fcr wird eine API genutzt, die \u00fcber ein API Gateway an die Partner bereitgestellt werden muss. Dieses","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/nash-opyt-sozdaniya-api-gateway","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/30792","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=30792"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/30792\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/22777"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=30792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=30792"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=30792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}