Apigee Edge belgelerini görüntülüyorsunuz.
Git:
Apigee X belgeleri. bilgi
Edge'de aşağıdaki gibi hizmetler sunan "yönetim API'leri" adlı güçlü bir yardımcı program bulunur:
- API Proxy'lerini dağıtma veya dağıtmayı kaldırma
- Sanal ana makineleri, anahtar depolarını ve güven depolarını vb. yapılandırma
- KeyValueHaritalar, API Ürünleri, Geliştirici gibi varlıkları oluşturma, silme ve/veya güncelleme Uygulamalar, Geliştiriciler, Tüketici Anahtarları vb.
- Bu varlıklar hakkında bilgi alınıyor
Bu hizmetlere, Apigee Edge platformundaki Yönetim Sunucusu adlı bir bileşen aracılığıyla erişilebilir. Bu hizmetler, basit management API'nin yardımıyla kolayca çağrılabilir çağrısının en iyi yolu.
Bazen çalışma zamanında API Proxy'lerindeki bu hizmetlerden birini veya daha fazlasını kullanmamız gerekebilir. Bu KeyValueHaritalar, OAuth Erişim Jetonları, API Ürünleri, Geliştirici Uygulamaları, Geliştiriciler, Tüketici Anahtarları vb. anahtar/değer çiftleri, anahtar/değer çiftleri ve veya profilinin bir parçası olarak gösterilebilir.
Örneğin, daha güvenli hale getirmek için KeyValueMap'te aşağıdaki bilgileri saklayabilir ve çalışma zamanında erişilebilir:
- 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ünleri'nin listesini veya geliştiricinin e-posta adresini almak isteyebilirsiniz. Bu bilgiler, Geliştirici Uygulamaları profilinde yer alır.
Tüm bu bilgiler, politikalarda dinamik davranış sağlamak için çalışma zamanında etkili bir şekilde kullanılabilir veya özel kod kullanabilirsiniz.
Antipattern
Yönetim API'leri tercih edilir ve yönetim görevleri için kullanışlıdır, API Proxy'leri akışında tüm çalışma zamanı mantığını gerçekleştirme. Bunun nedeni:
- KeyValueMaps, OAuth erişim jetonları gibi öğelerle ilgili bilgilere erişmek veya API proxy'lerinden başka bir amaçla 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 kullanılabilirliğe sahip olmayabilir.
- Ayrıca Yönetim Sunucuları aynı ağ veya veri merkezi içinde sağlanamayabilir ve bu nedenle çalışma zamanında ağ gecikmeleri yaşanır.
- Yönetim sunucularındaki girişler daha uzun süre boyunca önbelleğe alındığından, 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 management API çağrısı, özel JavaScript kodu kullanılarak KeyValueMap'ten bilgileri alın:
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'sini çağıran JavaScript kodu çağrısı başarısız olur. Bu da API isteğinin başarısız olmasına neden olur.
Etki
- Çalışma zamanı sırasında Yönetim Sunucularına ek bağımlılık sağlar. Şuradaki herhangi bir hata: Yönetim sunucuları API çağrılarını etkiler.
- Yönetim API'leri için kullanıcı kimlik bilgilerinin yerel olarak veya Şifrelenmiş KVM gibi güvenli bir depolama alanında saklanması gerekir.
- Yönetim hizmetinin ağ üzerinden çağrılmasından kaynaklanan performans etkileri.
- Yönetimde önbellek geçerlilik süresinin uzaması nedeniyle güncellenen değerleri hemen göremeyebilirsiniz. sunucu.
En iyi uygulama
Çalışma zamanında KeyValueMaps, APIProducts, DeveloperApps, Developers, Consumer Keys gibi öğelerden bilgi almanın daha etkili yolları vardır. Aşağıda birkaç örnek verilmiştir:
- KeyValuemaps'teki bilgilere erişmek için bir KeyValueMapOperations politikası kullanın. Aşağıda örnek kod verilmiştir
KeyValueMap'ten bilginin nasıl alınacağını gösteren resim:
<!-- /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 Ürünleri, Geliştirici Uygulamaları, Geliştiriciler, Tüketici Anahtarları vb. ile ilgili bilgilere erişmek için
API Proxy'sinde aşağıdakilerden birini yapabilirsiniz:
- API Proxy akışınızda bir VerifyAPIKey politikası varsa bilgilere erişebilirsiniz.
bu politikanın bir parçası olarak doldurulan akış değişkenlerini kullanarak. Bu örnekte,
JavaScript kullanılarak bir Geliştirici Uygulamasının adı ve created_by bilgileri nasıl alınır?
<!-- /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 akışınızın bir VerifyAPIKey politikası yoksa
Varlık Erişimi ve Değişkenleri Ayıklama özelliğini kullanarak API Ürünleri, Geliştirici Uygulamaları vb. profilleri
politikalar:
- AccessEntity politikası ile DeveloperApp 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>
- ExtractDeğişkenler politikasını kullanarak DeveloperApp'ten
appId
dosyasını çıkarı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 profilini alın:
- API Proxy akışınızda bir VerifyAPIKey politikası varsa bilgilere erişebilirsiniz.
bu politikanın bir parçası olarak doldurulan akış değişkenlerini kullanarak. Bu örnekte,
JavaScript kullanılarak bir Geliştirici Uygulamasının adı ve created_by bilgileri nasıl alınır?