<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Edge verfügt über ein leistungsstarkes Dienstprogramm namens „Verwaltungs-APIs“, das Dienste wie die folgenden bietet:
- API-Proxys bereitstellen oder Bereitstellung aufheben
- Virtuelle Hosts, Schlüsselspeicher und Truststores konfigurieren
- Erstellen, Löschen und/oder Aktualisieren von Entitäten wie KeyValueMaps, API-Produkten, Entwickler Apps, Entwickler, Consumer Keys usw.
- Informationen zu diesen Entitäten abrufen
Der Zugriff auf diese Dienste erfolgt über eine Komponente namens Management Server in der Apigee Edge-Plattform Diese Dienste können mithilfe einer einfachen Verwaltungs-API problemlos aufgerufen werden. Anrufe.
Manchmal müssen wir einen oder mehrere dieser Dienste von API-Proxys zur Laufzeit verwenden. Dies ist da Entitäten wie KeyValueMaps, OAuth-Zugriffstokens, API-Produkte, Entwickler-Apps, Entwickler, Verbraucherschlüssel usw. enthalten nützliche Informationen in Form von Schlüssel/Wert-Paaren, benutzerdefinierten Attribute oder als Teil seines Profils sein.
Sie können beispielsweise die folgenden Informationen in KeyValueMap speichern, um sie zur Laufzeit sicherer und zugänglicher zu machen:
- Backend-Ziel-URLs
- Umgebungsattribute
- Sicherheitsanmeldedaten für Backend- oder Drittanbietersysteme
Ebenso können Sie die Liste der API-Produkte oder die E-Mail-Adresse des Entwicklers zur Laufzeit abrufen. Diese Informationen werden im Rahmen des Developer Apps-Profils verfügbar sein.
All diese Informationen können effektiv zur Laufzeit genutzt werden, um dynamisches Verhalten in Richtlinien zu ermöglichen. oder benutzerdefinierten Code in Apigee Edge.
Anti-Pattern
Die Verwaltungs-APIs werden für Verwaltungsaufgaben bevorzugt und nützlich und sollten nicht für Ausführung einer Laufzeitlogik im API-Proxies-Ablauf. Dies hat folgende Gründe:
- Verwenden von Verwaltungs-APIs für den Zugriff auf Informationen zu Entitäten wie KeyValueMaps, OAuth Zugriffs-Tokens oder für andere Zwecke von API-Proxys führen zu Abhängigkeit vom Management. Server.
- Verwaltungsserver sind nicht Teil der Edge-Laufzeitkomponente und sind daher möglicherweise nicht hochverfügbar sind.
- Verwaltungsserver können auch nicht innerhalb desselben Netzwerks oder Rechenzentrums bereitgestellt werden und können daher zur Laufzeit zu Netzwerklatenzen führen.
- Die Einträge auf den Verwaltungsservern werden für einen längeren Zeitraum im Cache gespeichert. Daher können wir die neuesten Daten möglicherweise nicht sofort in den API-Proxies anzeigen, wenn wir innerhalb kurzer Zeit Schreibvorgänge und Lesevorgänge ausführen.
- Erhöhen der Netzwerk-Hops zur Laufzeit
Im Codebeispiel unten erfolgt der Verwaltungs-API-Aufruf über den benutzerdefinierten JavaScript-Code, um rufen Sie die Informationen aus der KeyValueMap ab:
var response = httpClient.send('https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/keyvaluemaps/kvm_name')
Wenn der Verwaltungsserver nicht verfügbar ist, kann der JavaScript-Code, der die Verwaltungs-API aufruft, -Aufruf fehlschlägt. Dadurch schlägt die API-Anfrage fehl.
Auswirkungen
- Führt während der Laufzeit zu einer zusätzlichen Abhängigkeit von Verwaltungsservern. Jeder Fehler auf den Verwaltungsservern wirkt sich auf die API-Aufrufe aus.
- Nutzeranmeldedaten für Verwaltungs-APIs müssen entweder lokal oder in einem sicheren Speicher gespeichert werden. wie eine verschlüsselte KVM.
- Leistungseinbußen durch den Aufruf des Verwaltungsdienstes über das Netzwerk
- Die aktualisierten Werte werden aufgrund einer längeren Cache-Ablaufzeit auf Verwaltungsservern möglicherweise nicht sofort angezeigt.
Best Practice
Es gibt effektivere Methoden zum Abrufen von Informationen von Entitäten wie KeyValueMaps, API Produkte, Entwickler-Apps, Entwickler, Verbraucherschlüssel usw. während der Laufzeit. Hier einige Beispiele:
- Verwenden Sie eine KeyValueMapOperations-Richtlinie, um auf Informationen aus KeyValueMaps zuzugreifen. Hier ist ein Beispielcode.
wie Sie Informationen aus der KeyValueMap abrufen können:
<!-- /antipatterns/examples/2-6.xml --> <KeyValueMapOperations mapIdentifier="urlMap" async="false" continueOnError="false" e>nab<led="t>rue"< name=">Get<URLKVM" D>ispla<yNameGetURLKVM/Di>spl<ayNam>e ExpiryT<imeInS>ecs<86400/ExpiryTimeInSecs Scopeenv>ironm<ent>/Scope < Get ass>ignTo=&qu<ot;urlHost>i&quo<t; i>nde<x=&q>u<ot;2" Key > ParameterurlHost_1/Parameter /Key /Get /KeyValueMapOperations
- Um auf API-Produkte, Entwickler-Apps, Entwickler, Consumer-Schlüssel usw. im API-Proxy zuzugreifen, haben Sie folgende Möglichkeiten:
- Wenn Ihr API-Proxy-Flow eine VerifyAPIKey-Richtlinie hat, können Sie mit den Flow-Variablen, die als Teil dieser Richtlinie ausgefüllt werden, auf die Informationen zugreifen. Im folgenden Beispielcode sehen Sie, wie Sie den Namen und die created_by-Informationen einer Entwickler-App mit JavaScript abrufen:
<!-- /antipatterns/examples/2-7.xml --> print("Application Name ", context.getVariable(""verifyapikey. VerifyAPIKey.app.name")); print("Created by:", context.getVariable("verifyapikey. VerifyAPIKey.app.created_by"));
- Wenn Ihr API-Proxy-Ablauf keine „VerifyAPIKey“-Richtlinie hat, können Sie auf den
Profile von API-Produkten, Entwickler-Apps usw. unter Verwendung der Zugriffsentität und der Variablen extrahieren
Richtlinien:
<ph type="x-smartling-placeholder">
- </ph>
- Rufen Sie das Profil der DeveloperApp mit der AccessEntity-Richtlinie ab:
<!-- /antipatterns/examples/2-8.xml --> <?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? AccessEntity async="false" continueOnError=">;fa<lse" e>nabled="tr<ue" nam>e=&<quot;GetDeveloperApp&q><uot; Disp>lay<NameGetDeveloperApp/DisplayName EntityType value=">app<"/EntityType EntityIdentifier ref="developer.a>p<p.name" >type="appname"/ SecondaryIdentifier ref="developer.id" type="developerid"/ /AccessEntity
- Extrahieren Sie die
appIdaus der DeveloperApp mit der ExtractVariables-Richtlinie:<!-- /antipatterns/examples/2-9.xml --> <ExtractVariables name="Extract-Developer App->Inf<o" !-- The source element points to the variable populated by AccessEntity policy. The <format is p>o<licy-type.p>olicy-name In this case, the variable contains the whole developer pro>fil<e. ->- SourceAccessEntity.GetDev<eloperA>pp&<quot;/Source > VariablePre<fixdeveloperapp>/Va<riablePref>ix <XMLPayload Variable name=">appld&q<uot; type="string" !-- You parse elements from th>e devel<oper >profile us<ing XP>ath. <-- >XPa<th/App/AppI>d</XPath /Varia>ble /XMLPayload /ExtractVariables
- Rufen Sie das Profil der DeveloperApp mit der AccessEntity-Richtlinie ab:
- Wenn Ihr API-Proxy-Flow eine VerifyAPIKey-Richtlinie hat, können Sie mit den Flow-Variablen, die als Teil dieser Richtlinie ausgefüllt werden, auf die Informationen zugreifen. Im folgenden Beispielcode sehen Sie, wie Sie den Namen und die created_by-Informationen einer Entwickler-App mit JavaScript abrufen: