Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Edge ma zaawansowane narzędzie o nazwie „interfejsy API zarządzania”, które oferuje takie usługi jak:
- wdrażanie i wycofywanie wdrożenia proxy interfejsu API;
- konfigurowanie hostów wirtualnych, magazynów kluczy, magazynów zaufanych certyfikatów itp.;
- tworzenie, usuwanie i aktualizowanie encji, takich jak KeyValueMaps, produkty API, aplikacje deweloperskie, deweloperzy, klucze konsumenckie itp.;
- pobieranie informacji o tych encjach.
Te usługi są udostępniane za pomocą komponentu o nazwie serwer zarządzania na platformie Apigee Edge. Można je łatwo wywołać za pomocą prostych wywołań interfejsu API zarządzania.
Czasami może być konieczne użycie jednej lub kilku z tych usług z proxy interfejsu API w czasie działania. Dzieje się tak, ponieważ encje takie jak KeyValueMaps, tokeny dostępu OAuth, produkty API, aplikacje deweloperskie, deweloperzy, klucze konsumenckie itp. zawierają przydatne informacje w postaci par klucz-wartość, atrybutów niestandardowych lub w ramach profilu.
W KeyValueMap możesz na przykład przechowywać te informacje, aby zwiększyć ich bezpieczeństwo i dostępność w czasie działania:
- docelowe adresy URL backendu;
- właściwości środowiska;
- dane uwierzytelniające backendu lub systemów innych firm.
Podobnie w czasie działania możesz chcieć uzyskać listę produktów API lub adres e-mail dewelopera. Te informacje będą dostępne w profilu aplikacji deweloperskich.
Wszystkie te informacje można efektywnie wykorzystywać w czasie działania, aby włączyć dynamiczne działanie w zasadach lub kodzie niestandardowym w Apigee Edge.
Antywzorzec
Interfejsy API zarządzania są preferowane i przydatne w przypadku zadań administracyjnych i nie powinny być używane do wykonywania logiki w czasie działania w przepływie proxy interfejsu API. Dzieje się tak, ponieważ:
- używanie interfejsów API zarządzania do uzyskiwania dostępu do informacji o encjach, takich jak KeyValueMaps, tokeny dostępu OAuth tokeny dostępu lub do innych celów z proxy interfejsu API prowadzi do zależności od serwerów zarządzania serwerów;
- serwery zarządzania nie są częścią komponentu środowiska wykonawczego Edge i dlatego mogą nie być wysoce dostępne;
- serwery zarządzania mogą też nie być udostępniane w tej samej sieci lub centrum danych, co może powodować opóźnienia w sieci w czasie działania;
- wpisy na serwerach zarządzania są buforowane przez dłuższy czas, więc możemy nie widzieć najnowszych danych w proxy interfejsu API, jeśli wykonujemy zapisy i odczyty w krótkim czasie;
- zwiększa liczbę przeskoków w sieci w czasie działania.
W przykładowym kodzie poniżej wywołanie interfejsu API zarządzania jest wykonywane za pomocą niestandardowego kodu JavaScript w celu pobrania informacji z KeyValueMap:
var response = httpClient.send('https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/keyvaluemaps/kvm_name')
Jeśli serwer zarządzania jest niedostępny, kod JavaScript wywołujący interfejs API zarządzania nie działa. Powoduje to niepowodzenie żądania do interfejsu API.
Wpływ
- Wprowadza dodatkową zależność od serwerów zarządzania w czasie działania. Każda awaria serwerów zarządzania będzie miała wpływ na wywołania interfejsu API.
- Dane uwierzytelniające użytkownika w interfejsach API zarządzania muszą być przechowywane lokalnie lub w bezpiecznym magazynie takim jak zaszyfrowany KVM.
- Wpływ na wydajność spowodowany wywoływaniem usługi zarządzania przez sieć.
- Z powodu dłuższego czasu wygaśnięcia pamięci podręcznej na serwerach zarządzania zaktualizowane wartości mogą nie być widoczne od razu.
Sprawdzona metoda
Istnieją skuteczniejsze sposoby pobierania informacji z encji, takich jak KeyValueMaps, produkty API, aplikacje deweloperskie, deweloperzy, klucze konsumenckie itp., w czasie działania. Oto kilka przykładów:
- Aby uzyskać dostęp do informacji z KeyValueMaps, użyj zasady KeyValueMapOperations. Oto przykładowy kod
który pokazuje, jak pobrać informacje z KeyValueMap:
<!-- /antipatterns/examples/2-6.xml --> <KeyValueMapOperations mapIdentifier="urlMap" async="false" continueOnError="false" enabled="true" name="GetURLKVM"> <DisplayName>GetURLKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Get assignTo="urlHosti" index="2"> <Key> <Parameter>urlHost_1</Parameter> </Key> </Get> </KeyValueMapOperations>
- Aby uzyskać dostęp do informacji o produktach API, aplikacjach deweloperskich, deweloperach, kluczach konsumenckich itp.
w proxy interfejsu API, możesz wykonać jedną z tych czynności:
- Jeśli przepływ proxy interfejsu API zawiera zasadę VerifyAPIKey, możesz uzyskać dostęp do informacji
za pomocą zmiennych przepływu wypełnianych w ramach tej zasady. Oto przykładowy kod, który pokazuje
jak pobrać nazwę i informacje o utworzeniu aplikacji deweloperskiej za pomocą JavaScript:
<!-- /antipatterns/examples/2-7.xml --> print("Application Name ", context.getVariable(""verifyapikey. VerifyAPIKey.app.name")); print("Created by:", context.getVariable("verifyapikey. VerifyAPIKey.app.created_by"));
- Jeśli przepływ proxy interfejsu API nie zawiera zasady VerifyAPIKey, możesz uzyskać dostęp do
profili produktów API, aplikacji deweloperskich itp. za pomocą zasad AccessEntity i ExtractVariables
policies:
- Pobierz profil DeveloperApp za pomocą zasady AccessEntity:
<!-- /antipatterns/examples/2-8.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetDeveloperApp"> <DisplayName>GetDeveloperApp</DisplayName> <EntityType value="app"></EntityType> <EntityIdentifier ref="developer.app.name" type="appname"/> <SecondaryIdentifier ref="developer.id" type="developerid"/> </AccessEntity>
- Wyodrębnij
appIdz DeveloperApp za pomocą zasady ExtractVariables:<!-- /antipatterns/examples/2-9.xml --> <ExtractVariables name="Extract-Developer App-Info"> <!-- The source element points to the variable populated by AccessEntity policy. The format is <policy-type>.<policy-name> In this case, the variable contains the whole developer profile. --> <Source>AccessEntity.GetDeveloperApp"</Source> <VariablePrefix>developerapp</VariablePrefix> <XMLPayload> <Variable name="appld" type="string"> <!-- You parse elements from the developer profile using XPath. --> <XPath>/App/AppId</XPath> </Variable> </XMLPayload> </ExtractVariables>
- Pobierz profil DeveloperApp za pomocą zasady AccessEntity:
- Jeśli przepływ proxy interfejsu API zawiera zasadę VerifyAPIKey, możesz uzyskać dostęp do informacji
za pomocą zmiennych przepływu wypełnianych w ramach tej zasady. Oto przykładowy kod, który pokazuje
jak pobrać nazwę i informacje o utworzeniu aplikacji deweloperskiej za pomocą JavaScript: