Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Edge ma zaawansowane narzędzie o nazwie „interfejsy API do zarządzania”, które oferuje takie usługi jak:
- Wdrażanie lub wycofanie serwerów proxy interfejsów API
- Konfigurowanie hostów wirtualnych, magazynów kluczy, magazynów zaufania itp.
- Tworzenie, usuwanie lub aktualizowanie encji, takich jak KeyValueMaps, Usługi API, Programista Aplikacje, programiści, klucze klienta itp.
- Pobieranie informacji o tych jednostkach
Te usługi są dostępne za pomocą komponentu o nazwie Management Server na platformie Apigee Edge. Te usługi można łatwo wywołać za pomocą prostego interfejsu API do zarządzania połączeń.
Czasami może być konieczne użycie jednej lub kilku z tych usług z serwerów proxy interfejsów API w czasie działania. To jest ponieważ encje takie jak KeyValueMaps, OAuth Access Tokens, API Products, Developer Apps Programiści, klucze klienta itp. zawierają przydatne informacje w postaci par klucz-wartość, lub jako część jego profilu.
Możesz na przykład zapisać poniższe informacje w kluczu KeyValueMap, aby były bezpieczniejsze dostępne w czasie działania:
- Docelowe adresy URL backendu
- Właściwości środowiska
- Dane uwierzytelniające systemu backendu lub systemów innych firm
Podobnie możesz zechcieć pobrać listę usług API lub adres e-mail dewelopera w czasie działania. Te informacje będą dostępne w ramach profilu aplikacji dewelopera.
Wszystkie te informacje można efektywnie wykorzystać w czasie działania, aby umożliwić dynamiczne zachowanie zasad. lub niestandardowy kod w Apigee Edge.
antywzorzec
Interfejsy API do zarządzania są preferowane i przydatne do zadań administracyjnych. Nie należy ich używać do: wykonywania dowolnej logiki środowiska wykonawczego w przepływie serwerów proxy interfejsów API. Dzieje się tak, ponieważ:
- Uzyskiwanie dostępu do informacji o encjach, takich jak KeyValueMaps, OAuth Tokeny dostępu lub inne cele z serwerów proxy interfejsów API wymagają zależności od funkcji zarządzania Serwery.
- Serwery zarządzania nie są częścią środowiska wykonawczego Edge i dlatego mogą nie być o wysokiej dostępności.
- Serwery zarządzania nie mogą być też udostępniane w tej samej sieci lub centrum danych i mogą dlatego wprowadzamy opóźnienia sieciowe w czasie działania.
- Wpisy na serwerach zarządzania są przechowywane w pamięci podręcznej przez dłuższy czas, więc dane mogą nie być najnowsze dane są widoczne natychmiast na serwerach proxy interfejsów API, jeśli wykonamy zapisy i odczyty w w krótkim czasie.
- Zwiększa liczbę skoków sieci w czasie wykonywania.
W poniższym przykładzie kodu wywołanie interfejsu API zarządzania jest wykonywane za pomocą niestandardowego kodu JavaScript, aby pobierz informacje 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 uda się nawiązać połączenia. W efekcie żądanie do interfejsu API kończy się niepowodzeniem.
Wpływ
- Zapewnia dodatkową zależność od serwerów zarządzania podczas działania środowiska wykonawczego. Wszystkie błędy dotyczące Serwery zarządzania będą miały wpływ na wywołania interfejsu API.
- Dane uwierzytelniające użytkownika do interfejsów API do zarządzania muszą być przechowywane lokalnie lub w bezpiecznym miejscu, takim jak szyfrowana pamięć KVM.
- Wpływ na wydajność usługi zarządzania przez sieć.
- Zaktualizowane wartości mogą nie być widoczne od razu ze względu na dłuższy czas wygaśnięcia pamięci podręcznej w zarządzaniu serwerów.
Sprawdzona metoda
Istnieją bardziej efektywne sposoby pobierania informacji od podmiotów, takich jak KeyValueMaps, API Products, DeveloperApps, Developers, Consumer Keys itd. Oto kilka przykładów:
- Aby uzyskać dostęp do informacji z KeyValueMaps, użyj zasad 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 usługach API, aplikacjach programistów, programistach, kluczach klienta itp.
na serwerze proxy interfejsu API wykonaj jedną z tych czynności:
- Jeśli przepływ danych przez interfejs API jest objęty zasadą weryfikacji klucza API, możesz uzyskać dostęp do informacji, korzystając z zmiennych przepływu danych wypełnionych w ramach tej zasady. Oto przykładowy kod, który pokazuje,
Jak za pomocą JavaScriptu pobrać nazwę i informacje o aplikacji create_by:
<!-- /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 VerifyAPIKey, możesz uzyskać dostęp do
profili usług API, aplikacji programistów itd. przy użyciu jednostki dostępu i zmiennych wyodrębniania.
zasady:
- Pobierz profil DeveloperApp przy użyciu 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 DeveloperApp za pomocą wyodrębniania zasadyWyodrębnianie zmiennych:<!-- /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 przy użyciu zasady AccessEntity:
- Jeśli przepływ danych przez interfejs API jest objęty zasadą weryfikacji klucza API, możesz uzyskać dostęp do informacji, korzystając z zmiennych przepływu danych wypełnionych w ramach tej zasady. Oto przykładowy kod, który pokazuje,
Jak za pomocą JavaScriptu pobrać nazwę i informacje o aplikacji create_by: