Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Edge'de "yönetim API'leri" adı verilen güçlü bir yardımcı program bulunur. Bu yardımcı program aşağıdaki gibi hizmetler sunar:
- API proxy'lerini dağıtma veya dağıtımlarını kaldırma
- Sanal ana makineleri, anahtar depolarını ve güvenli depoları yapılandırma
- KeyValueMaps, API Ürünleri, Geliştirici Uygulamaları, Geliştiriciler, Tüketici Anahtarları gibi varlıkları oluşturma, silme ve/veya güncelleme
- Bu varlıklar hakkında bilgi alma
Bu hizmetlere, Apigee Edge platformundaki Yönetim Sunucusu adlı bir bileşen üzerinden erişilebilir. Bu hizmetler, basit yönetim API çağrıları yardımıyla kolayca çağrılabilir.
Bazen çalışma zamanında API proxy'lerinden bu hizmetlerden birini veya daha fazlasını kullanmamız gerekebilir. Bunun nedeni, KeyValueMaps, OAuth Access Tokens, API Products, Developer Apps, Developers, Consumer Keys gibi öğelerin anahtar/değer çiftleri, özel özellikler veya profilinin bir parçası olarak faydalı bilgiler içermesidir.
Örneğin, aşağıdaki bilgileri KeyValueMap'te depolayarak daha güvenli ve çalışma zamanında erişilebilir hale getirebilirsiniz:
- Arka uç hedef URL'leri
- Ortam özellikleri
- Arka uç veya üçüncü taraf sistemlerinin güvenlik kimlik bilgileri
Benzer şekilde, çalışma zamanında API ürünlerinin listesini veya geliştiricinin e-posta adresini almak isteyebilirsiniz. Bu bilgiler, Geliştirici Uygulamaları profilinde yer alır.
Tüm bu bilgiler, politikalar veya Apigee Edge'deki özel kodda dinamik davranışları etkinleştirmek için çalışma zamanında etkili bir şekilde kullanılabilir.
Antipattern
Yönetim API'leri tercih edilir ve yönetim görevleri için kullanışlıdır. API proxy'leri akışında herhangi bir çalışma zamanı mantığı yürütmek için kullanılmamalıdır. Bunun nedeni:
- KeyValueMaps, OAuth Erişim Jetonları gibi varlıklar hakkındaki bilgilere erişmek veya API Proxies'den başka bir amaçla yararlanmak için yönetim API'lerini kullanmak, Yönetim Sunucularına bağımlılığa yol açar.
- Yönetim sunucuları, Edge çalışma zamanı bileşeninin bir parçası değildir ve bu nedenle yüksek düzeyde kullanılabilir olmayabilir.
- Yönetim sunucuları aynı ağ veya veri merkezi içinde de sağlanmayabilir ve bu nedenle çalışma zamanında ağ gecikmelerine neden olabilir.
- Yönetim sunucularındaki girişler daha uzun süre önbelleğe alınır. Bu nedenle, kısa süre içinde yazma ve okuma işlemleri yaparsak en son verileri API proxy'lerinde hemen göremeyebiliriz.
- Çalışma zamanında ağ atlamalarını artırır.
Aşağıdaki kod örneğinde, KeyValueMap'ten bilgileri almak için yönetim API'si çağrısı özel JavaScript kodu aracılığıyla yapılır:
var response = httpClient.send('https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/keyvaluemaps/kvm_name')
Yönetim sunucusu kullanılamıyorsa yönetim API'si çağrısını çağıran JavaScript kodu başarısız olur. Bu durum, API isteğinin başarısız olmasına neden olur.
Etki
- Çalışma zamanında yönetim sunucularına ek bağımlılık getirir. Yönetim sunucularındaki herhangi bir hata, API çağrılarını etkiler.
- Yönetim API'leri için kullanıcı kimlik bilgileri yerel olarak veya şifrelenmiş KVM gibi güvenli bir depolama alanında saklanmalıdır.
- Yönetim hizmetinin ağ üzerinden çağrılmasından kaynaklanan performans etkileri.
- Yönetim sunucularında önbelleğin süresinin daha uzun olması nedeniyle güncellenen değerleri hemen göremeyebilirsiniz.
En iyi uygulama
Çalışma zamanında KeyValueMaps, APIProducts, DeveloperApps, Developers, Consumer Keys gibi varlıklardan bilgi almanın daha etkili yolları vardır. Aşağıda birkaç örnek verilmiştir:
- KeyValueMaps'ten bilgilere erişmek için KeyValueMapOperations politikası kullanın. KeyValueMap'ten bilgilerin nasıl alınacağını gösteren örnek kodu aşağıda bulabilirsiniz:
<!-- /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>
- API Proxy'sindeki API Ürünleri, Geliştirici Uygulamaları, Geliştiriciler, Tüketici Anahtarları vb. hakkında bilgiye erişmek için aşağıdakilerden birini yapabilirsiniz:
- API proxy'nizdeki akışta VerifyAPIKey politikası varsa bu politika kapsamında doldurulan akış değişkenlerini kullanarak bilgilere erişebilirsiniz. Aşağıda, JavaScript kullanarak bir geliştirici uygulamasının adının ve created_by bilgilerinin nasıl alınacağını gösteren örnek kod verilmiştir:
<!-- /antipatterns/examples/2-7.xml --> print("Application Name ", context.getVariable(""verifyapikey. VerifyAPIKey.app.name")); print("Created by:", context.getVariable("verifyapikey. VerifyAPIKey.app.created_by"));
- API proxy'niz akışında VerifyAPIKey politikası yoksa Access Entity ve Extract Variables politikalarını kullanarak API ürünlerinin, geliştirici uygulamalarının vb. profillerine erişebilirsiniz:
- AccessEntity politikası ile DeveloperApp'in profilini alın:
<!-- /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>
- ExtractVariables politikası ile DeveloperApp'ten
appIddeğerini ayıklayın:<!-- /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>
- AccessEntity politikası ile DeveloperApp'in profilini alın:
- API proxy'nizdeki akışta VerifyAPIKey politikası varsa bu politika kapsamında doldurulan akış değişkenlerini kullanarak bilgilere erişebilirsiniz. Aşağıda, JavaScript kullanarak bir geliştirici uygulamasının adının ve created_by bilgilerinin nasıl alınacağını gösteren örnek kod verilmiştir: