Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Edge zawiera zaawansowane narzędzie o nazwie „interfejsy API do zarządzania”, które oferuje takie usługi jak:
- Wdrażanie i wycofywanie wdrożeń serwerów proxy interfejsów API
- Konfigurowanie hostów wirtualnych, magazynów kluczy i magazynów zaufania itd.
- Tworzenie, usuwanie lub aktualizowanie encji, takich jak KeyValueMap, produktów API, aplikacji dla programistów, programistów, kluczy klienta itp.
- Pobieranie informacji o tych elementach
Usługi te są dostępne za pomocą komponentu o nazwie Management Server (Serwer zarządzania) na platformie Apigee Edge. Usługi te można łatwo wywołać za pomocą prostych wywołań interfejsu API zarządzania.
Czasami może być konieczne użycie w czasie działania jednej lub kilku z tych usług z serwerów proxy API. Dzieje się tak, ponieważ encje takie jak KeyValueMap, tokeny dostępu OAuth, produkty API, aplikacje programistów, deweloperzy, klucze klienta itp. zawierają przydatne informacje w postaci par klucz-wartość, atrybutów niestandardowych lub w ramach profilu.
Możesz na przykład zapisać w obiekcie KeyValueMap poniższe informacje, aby zwiększyć ich bezpieczeństwo i uzyskać dostęp do nich w czasie działania:
- Docelowe adresy URL backendu
- Właściwości środowiska
- Dane uwierzytelniające systemów backendu lub innych firm
Warto też mieć dostęp do listy usług API lub adresu e-mail dewelopera w czasie działania aplikacji. Te informacje będą dostępne w profilu aplikacji dla deweloperów.
Wszystkie te informacje można efektywnie wykorzystywać w czasie działania w celu umożliwienia dynamicznego zachowania w zasadach lub niestandardowego kodu w Apigee Edge.
Antywzór
Interfejsy API do zarządzania są preferowane i przydatne do zadań administracyjnych. Nie należy ich używać do wykonywania żadnej logiki środowiska wykonawczego w procesie korzystania z serwerów proxy API. Dzieje się tak, ponieważ:
- Korzystanie z interfejsów API zarządzania do uzyskiwania dostępu do informacji o jednostkach, takich jak KeyValueMap, tokeny dostępu OAuth lub do innych celów z serwerów API Proxies, prowadzi do zależności od serwerów zarządzania.
- Serwery zarządzania nie są częścią komponentu środowiska wykonawczego Edge i dlatego mogą nie być wysokiej dostępności.
- Serwery zarządzania mogą też nie być udostępniane w tej samej sieci lub centrum danych i dlatego mogą powodować opóźnienia w sieci w czasie działania.
- Wpisy na serwerach zarządzania przez dłuższy czas są przechowywane w pamięci podręcznej, więc najnowsze dane mogą nie być widoczne od razu w serwerach proxy interfejsu API, jeśli przeprowadzamy zapisy i odczyty w krótkim czasie.
- Zwiększa liczbę przeskokó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 obiektu 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 nie może wywołać wywołania interfejsu API zarządzania. To powoduje, że żądanie do interfejsu API kończy się niepowodzeniem.
Wpływ
- Wprowadza dodatkową zależność od serwerów zarządzania w czasie działania. Wszelkie błędy na serwerach zarządzania będą miały wpływ na wywołania interfejsu API.
- Dane logowania użytkownika do interfejsów API do zarządzania muszą być przechowywane lokalnie lub w bezpiecznym magazynie, np. zaszyfrowanym KVM.
- Wpływ na wydajność wynikający z wywoływania usługi zarządzania przez sieć.
- Zaktualizowane wartości mogą nie być widoczne od razu ze względu na dłuższy okres ważności pamięci podręcznej na serwerach zarządzania.
Sprawdzona metoda
Istnieją skuteczniejsze sposoby pobierania informacji z encji takich jak KeyValueMap, Produkty API, DeveloperApps, Developers, Klucze klienta itp. w czasie działania. Oto kilka przykładów:
- Użyj zasady KeyValueMapOperations, aby uzyskać dostęp do informacji z KeyValueMap. Oto przykładowy kod, który pokazuje, jak pobierać informacje z obiektu 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 usługach API, aplikacjach programisty, programistów, kluczach klienta itp. na serwerze proxy interfejsu API, możesz wykonać jedną z tych czynności:
- Jeśli proces serwera proxy interfejsu API ma 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 za pomocą JavaScriptu pobrać nazwę i informacje create_by aplikacji związanej z deweloperem:
<!-- /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 w przepływie serwera proxy interfejsu API nie ma zasady VerificationAPIKey, możesz uzyskać dostęp do profili usług API, aplikacji programistycznych itp. za pomocą zasad dotyczących encji dostępu i wyodrębniania zmiennych:
- 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
appId
z aplikacji DeveloperApp za pomocą zasad 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 proces serwera proxy interfejsu API ma 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 za pomocą JavaScriptu pobrać nazwę i informacje create_by aplikacji związanej z deweloperem: