Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Ne
Apigee Edge veri deposundan belirttiğiniz varlık profillerini alır. Politika, profili, adı AccessEntity.{policy_name}
biçimine uygun bir değişkene yerleştirir. Aşağıdaki varlıkların profillerine erişmek için AccessEntity
öğesini kullanabilirsiniz:
- Uygulama
- API ürünü
- Şirket
- Şirket geliştirici
- Tüketici anahtarı
- Geliştirici
AccessEntity
politikası, politikaya dayalı bir çalışma zamanı veritabanı araması görevi görür. Koşullu uç nokta yönlendirme, akış yürütme, politika uygulama gibi dinamik davranışları etkinleştirmek için bu politikanın döndürdüğü profil bilgilerini kullanabilirsiniz.
Varlık profili verilerini XML olarak almak ve bir değişkene yerleştirmek için AccessEntity
politikasını kullanırsınız. Alınacak varlığı, bir varlık türü ve bu türden hangi varlığı istediğinizi belirten bir veya daha fazla tanımlayıcı belirterek tanımlarsınız. Daha sonra başka bir politikada, varlık profili verilerini ExtractVariables politikası veya assignMessage politikası gibi başka bir politikayla alabilirsiniz.
Sana Özel
Aşağıdaki örneklerde AccessEntity
, bir geliştiricinin e-postasını almak ve HTTP üst bilgisine eklemek için ExtractVariables
ve AssignMessage
politikalarıyla birlikte kullanıldığını göstermektedir.
Diğer politikalarda kullanılmak üzere geliştirici e-postası alma
Edge'den alınacak varlık profilini ve profil verilerinin nereye yerleştirileceğini belirtmek için AccessEntity
politikasını ayarlayın.
Aşağıdaki örnekte politika, geliştiriciyi tanımlamak için sorgu parametresi olarak iletilen bir API anahtarını kullanarak developer
varlık profili alır. Profil, adı AccessEntity.{policy_name}
biçiminde olan bir değişkene yerleştirilir. Dolayısıyla, bu politika tarafından ayarlanan değişken AccessEntity.GetDeveloperProfile
olur.
<AccessEntity name="GetDeveloperProfile"> <!-- This is the type entity whose profile we need to pull from the Edge datastore. --> <EntityType value="developer"/> <!-- We tell the policy to use the API key (presented as query parameter) to identify the developer. --> <EntityIdentifier ref="request.queryparam.apikey" type="consumerkey"/> </AccessEntity>
AccessEntity
tarafından ayarlanan değişkenden varlık profili değerini almak için başka bir politika kullanın.
Aşağıdaki örnekte ExtractVariables
politikası, AccessEntity
tarafından önceden ayarlanan AccessEntity.GetDeveloperProfile
değişkeninden bir değer alıyor.
Alınan değerin, XMLPayload
öğesinde bir XPath ifadesi olarak belirtildiğini unutmayın. Ayıklanan değer bir developer.email
değişkenine yerleştirilir.
<ExtractVariables name="SetDeveloperProfile"> <!-- 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.GetDeveloperProfile</Source> <VariablePrefix>developer</VariablePrefix> <XMLPayload> <Variable name="email" type="string"> <!-- You parse elements from the developer profile using XPath. --> <XPath>/Developer/Email</XPath> </Variable> </XMLPayload> </ExtractVariables>
Aşağıdaki assignMessage politikası, ExtractVariables politikasında ayarlanan geliştirici e-postasını alır.
<!-- We'll use this policy to return the variables set in the developer profile, just so that we can easily see them in the response. --> <AssignMessage name="EchoVariables"> <AssignTo createNew="false" type="response"></AssignTo> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <Set> <Headers> <Header name="X-Developer-email">{developer.email}</Header> </Headers> </Set> </AssignMessage>
Öğe referansı
AccessEntity
politikasının temel yapısı şu şekildedir:
<AccessEntity name="policy_name"> <EntityType value="entity_type"/> <EntityIdentifier ref="entity_identifier" type="identifier_type"/> <SecondaryIdentifier ref="secondary_identifier" type="identifier_type"/> </AccessEntity>
Aynı türde birden çok varlığa erişmek için bunları bir Identifiers
öğesinde gruplandırabilirsiniz:
<AccessEntity name="name_of_the_policy"> <EntityType value="type_of_entity"/> <Identifiers> <Identifier> <EntityIdentifier ref="reference_to_entity_identifier" type*="identifier_type"/> <SecondaryIdentifier ref="reference_to_secondary_entity_identifier" type="identifier_type"/><!-- optional --> </Identifier > <Identifier> <EntityIdentifier ref="reference_to_entity_identifier" type*="identifier_type"/> <SecondaryIdentifier ref="reference_to_secondary_entity_identifier" type="identifier_type"/><!-- optional --> </Identifier > </Identifiers> </AccessEntity>
<AccessEntity> özellikleri
<AccessEntity async="false" continueOnError="false" enabled="true" name="policy_name">
Aşağıdaki tabloda, tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
name |
Politikanın dahili adı. İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için |
Yok | Gerekli |
continueOnError |
Bir politika başarısız olduğunda hata döndürülmesi için Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için |
false | İsteğe bağlı |
enabled |
Politikayı uygulamak için Politikayı devre dışı bırakmak için |
true | İsteğe bağlı |
async |
Bu özellik kullanımdan kaldırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğesi
Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name
özelliğine ek olarak kullanın.
<DisplayName>Policy Display Name</DisplayName>
Varsayılan |
Yok Bu öğeyi çıkarırsanız politikanın |
---|---|
Varlık | İsteğe bağlı |
Tür | Dize |
<EntityIdentifier> öğesi
Alınacak varlığı (EntityType'ta belirtilen türdeki) belirtir.
<EntityIdentifier ref="value_variable" type="identifier_type"/>
Varsayılan |
Yok |
Bulunma |
Gerekli |
Tür |
Dize |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık | Tür |
---|---|---|---|---|
referans |
Tanımlayıcının kaynağını sağlayan değişken (ör. |
Yok | Zorunlu. | Dize |
tür | ref özelliğindeki değişken tarafından doldurulan tür (ör. consumerkey ). Değerler listesi için Varlık türleri ve tanımlayıcılar konusuna bakın. |
Zorunlu. | Dize |
Örnek
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetCompany"> <DisplayName>GetCompanyProfile</DisplayName> <EntityType value="company"></EntityType> <EntityIdentifier ref="request.queryparam.apikey" type="consumerkey"/> </AccessEntity>
<EntityType> öğesi
Veri deposundan alınacak varlığın türünü belirtir.
<EntityType value="entity_type"/>
Varsayılan |
Yok |
Bulunma |
Gerekli |
Tür |
Dize |
Belirli bir türden istediğiniz varlığı belirtmek için EntityIdentifier
öğesi kullanın. Varlık türlerine bir referans için Varlık türleri ve tanımlayıcılar bölümüne bakın.
Özellikler
Özellik | Açıklama | Varsayılan | Varlık | Tür |
---|---|---|---|---|
value | Desteklenen varlık türlerinden biri. Liste için Varlık türleri ve tanımlayıcılar bölümüne bakın. | Yok. | Zorunlu. | Dize |
<İkincilIdentifier> öğesi
EntityIdentifier
ile birlikte, belirtilen EntityType
öğesinin istenen örneğini tanımlamak için bir değer belirtir.
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
Varsayılan |
Yok |
Bulunma |
İsteğe bağlı |
Tür |
Dize |
Yalnızca bir EntityIdentifier
belirtmeniz, tek bir varlık almanızı garanti etmeyecekse SecondaryIdentifier
kullanın. Daha fazla bilgi için İkincil tanımlayıcılarla sonuçları daraltma bölümüne bakın.
Birden fazla SecondaryIdentifier
öğesinin kullanılması desteklenmez.
Özellikler
Özellik | Açıklama | Varsayılan | Varlık | Tür |
---|---|---|---|---|
referans |
Tanımlayıcının kaynağını sağlayan değişken (ör. |
Yok | Zorunlu. | Dize |
tür | ref özelliğindeki değişken tarafından doldurulan tür (ör. consumerkey ). Değerler listesi için Varlık türleri ve tanımlayıcılar konusuna bakın. |
Zorunlu. | Dize |
Örnek
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetAPIProduct"> <DisplayName>GetAPIProduct</DisplayName> <EntityType value="apiproduct"></EntityType> <EntityIdentifier ref="developer.app.name" type="appname"/> <SecondaryIdentifier ref="developer.id" type="developerid"/> </AccessEntity>
Kullanım notları
İkincil tanımlayıcılarla sonuçları daraltma
Bazı varlıklar için tek bir tanımlayıcının belirtilmesi, istediğiniz varlığı elde edecek kadar spesifik olmayabilir. Bu durumlarda, sonuçları daraltmak için ikincil bir tanımlayıcı kullanabilirsiniz.
Büyük olasılıkla geniş kapsamlı ilk politika yapılandırmanız aşağıdaki gibi görünebilir:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetApp"> <DisplayName>GetAppProfile</DisplayName> <EntityType value="apiproduct"></EntityType> <EntityIdentifier ref="request.queryparam.apikey" type="consumerkey"/> </AccessEntity>
Bir uygulama birden fazla API ürünüyle ilişkilendirilebildiğinden, yalnızca uygulama kimliğinin kullanılması istediğiniz API ürününü döndürmeyebilir (eşleşen birden fazla üründen yalnızca ilkini alabilirsiniz).
Bunun yerine, daha kesin bir sonuç elde etmek için SecondaryIdentifier
kullanabilirsiniz. Örneğin, bir OAuth 2.0 exchange'i sırasında varsayılan olarak doldurulduğundan akışta appname
ve developerid
değişkenleri olabilir. İstekte bulunan uygulamayla ilgili profil ayrıntılarını almak için bu değişkenlerin değerlerini bir AccessEntity
politikasında kullanabilirsiniz.
Daha spesifik politika yapılandırmanız aşağıdaki gibi görünebilir:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetApp"> <DisplayName>GetAppProfile</DisplayName> <EntityType value="apiproduct"></EntityType> <EntityIdentifier ref="developer.app.name" type="appname"/> <SecondaryIdentifier ref="developer.id" type="developerid"/> </AccessEntity>
Desteklenen varlık türleri ve tanımlayıcılar
AccessEntity
, aşağıdaki varlık türlerini ve tanımlayıcıları destekler.
EntityType Değeri | EntityIdentifier Türleri | İkincil Tanımlayıcı Türleri |
---|---|---|
apiproduct |
appid |
apiresource |
apiproductname |
||
appname |
apiresource developeremail developerid companyname |
|
consumerkey |
apiresource |
|
app |
appid |
|
appname |
developeremail developerid companyname |
|
consumerkey |
||
authorizationcode |
authorizationcode |
|
company |
appid |
|
company |
||
consumerkey |
||
companydeveloper |
companyname |
|
consumerkey |
consumerkey |
|
consumerkey_scope |
consumerkey |
|
developer |
appid |
|
consumerkey |
||
developeremail |
||
developerid |
||
requesttoken |
requesttoken |
consumerkey |
verifier |
verifier |
Örnek varlık profili XML'i
XPath ile istediğiniz varlık profili değerini almak için profilin XML yapısı hakkında bilgi edinmeniz gerekir. Yapının bir örneği olarak, istediğiniz varlık için XML almak üzere bir Management API çağrısı kullanın. Ayrıntılar için management API referansına bakın.
Aşağıdaki bölümlerde, çağrıdan alınan örnek XML ile birlikte API çağrılarının kodu bulunmaktadır.
Uygulamalar
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \ -u email:password
Ayrıca, Edge Management API referansındaki Uygulamayı, Uygulama Kimliğine Göre Kuruluşa Alma bölümüne de göz atın.
veya:
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email}/apps/{app_name} \ -u email:password
Ayrıca, Edge Management API referansındaki Geliştirici Uygulaması Ayrıntılarını Alma bölümüne de bakın.
Örnek profil:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <App name="thomas-app"> <AccessType>read</AccessType> <ApiProducts/> <Credentials> <Credential> <Attributes/> <ConsumerKey>wrqOOOiPArFI0WRoB1gAJMRbOguekJ5w</ConsumerKey> <ConsumerSecret>WvOhDrJ8m6kzz7Ni</ConsumerSecret> <ApiProducts> <ApiProduct> <Name>FreeProduct</Name> <Status>approved</Status> </ApiProduct> </ApiProducts> <Scopes/> <Status>approved</Status> </Credential> </Credentials> <AppFamily>default</AppFamily> <AppId>ab308c13-bc99-4c50-8434-0e0ed1b86075</AppId> <Attributes> <Attribute> <Name>DisplayName</Name> <Value>Tom's Weather App</Value> </Attribute> </Attributes> <CallbackUrl>http://tom.app/login</CallbackUrl> <CreatedAt>1362502872727</CreatedAt> <CreatedBy>admin@apigee.com</CreatedBy> <DeveloperId>PFK8IwOeAOW01JKA</DeveloperId> <LastModifiedAt>1362502872727</LastModifiedAt> <LastModifiedBy>admin@apigee.com</LastModifiedBy> <Scopes/> <Status>approved</Status> </App>
API ürünü
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apiproducts/{apiproduct_name} \ -u email:password
Ayrıca, Edge Management API referansında API Ürünü Alma bölümüne de bakın.
Örnek XPath, weather_free
adlı API ürününden ikinci API kaynağını (URI) alır:
/ApiProduct['@name=weather_free']/ApiResources/ApiResource[1]/text()
Örnek profil XML olarak döndürüldü:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ApiProduct name="weather_free"> <ApiResources> <ApiResource>/forecastrss, /reports</ApiResource> </ApiResources> <ApprovalType>auto</ApprovalType> <Attributes> <Attribute> <Name>description</Name> <Value>Introductory API Product</Value> </Attribute> <Attribute> <Name>developer.quota.interval</Name> <Value>1</Value> </Attribute> <Attribute> <Name>developer.quota.limit</Name> <Value>1</Value> </Attribute> <Attribute> <Name>developer.quota.timeunit</Name> <Value>minute</Value> </Attribute> <Attribute> <Name>servicePlan</Name> <Value>Introductory</Value> </Attribute> </Attributes> <CreatedAt>1355847839224</CreatedAt> <CreatedBy>andrew@apigee.com</CreatedBy> <Description>Free API Product</Description> <DisplayName>Free API Product</DisplayName> <Environments/> <LastModifiedAt>1355847839224</LastModifiedAt> <LastModifiedBy>andrew@apigee.com</LastModifiedBy> <Proxies/> <Scopes/> </ApiProduct>
Şirket
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/companies/{company_name} \ -u email:password
Ayrıca, Edge Management API referansındaki Şirket Ayrıntılarını Alma bölümüne de bakın.
Örnek profil:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Company name="theramin"> <Apps/> <DisplayName>Theramin Corporation</DisplayName> <Organization>apigee-pm</Organization> <Status>active</Status> <Attributes> <Attribute> <Name>billing_code</Name> <Value>13648765</Value> </Attribute> </Attributes> <CreatedAt>1349208631291</CreatedAt> <CreatedBy>andrew@apigee.com</CreatedBy> <LastModifiedAt>1349208631291</LastModifiedAt> <LastModifiedBy>andrew@apigee.com</LastModifiedBy> </Company>
Şirket geliştirici
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/companies/{company_name}/developers/{developer_name} \ -u email:password
Örnek profil:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Developers> <Developer> <Email>ntesla@theramin.com</Email> <Role>developer</Role> </Developer> </Developers>
Tüketici anahtarı
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email}/apps/{app_name}/keys/{consumer_key} \ -u email:password
Ayrıca, Edge Management API referansında Geliştirici Uygulaması İçin Temel Ayrıntıları Alma bölümüne de bakın.
Örnek XPath:
/Credential/ApiProducts/ApiProduct[Name='weather_free']/Status/text()
Örnek profil:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Credential> <Attributes/> <ConsumerKey>XLotL3PRxNkUGXhGAFDPOr6fqtvAhuZe</ConsumerKey> <ConsumerSecret>iNUyEaOOh96KR3YL</ConsumerSecret> <ApiProducts> <ApiProduct> <Name>weather_free</Name> <Status>approved</Status> </ApiProduct> </ApiProducts> <Scopes/> <Status>approved</Status> </Credential>
Geliştirici
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email} \ -u email:password
Ayrıca, Edge Management API referansında Geliştirici Alma bölümüne de bakın.
Örnek XPath:
/Developer/Attributes/Attribute[Name='my_custom_attribute']/Value/text()
/Developer/Email/text()
Örnek profil:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Developer> <Apps> <App>weatherappx</App> <App>weatherapp</App> </Apps> <Email>ntesla@theramin.com</Email> <DeveloperId>4Y4xd0KRZ1wmHJqu</DeveloperId> <FirstName>Nikola</FirstName> <LastName>Tesla</LastName> <UserName>theramin</UserName> <OrganizationName>apigee-pm</OrganizationName> <Status>active</Status> <Attributes> <Attribute> <Name>project_type</Name> <Value>public</Value> </Attribute> </Attributes> <CreatedAt>1349797040634</CreatedAt> <CreatedBy>rsaha@apigee.com</CreatedBy> <LastModifiedAt>1349797040634</LastModifiedAt> <LastModifiedBy>rsaha@apigee.com</LastModifiedBy> </Developer>
Akış değişkenleri
AccessEntity politikasında belirtilen varlık profili alındığında, XML biçimli profil nesnesi, mesaj içeriğine değişken olarak eklenir. Diğer tüm değişkenler gibi değişken adına referans vererek erişilebilir. AccessEntity politikasının kullanıcı tarafından sağlanan adı, değişken adının değişken öneki olarak ayarlanır.
Örneğin, GetDeveloper
adlı bir AccessEntity politikası yürütülürse XML biçimli profil AccessEntity.GetDeveloper
adlı değişkende depolanır. XML biçimli profil daha sonra kaynağı olarak AccessEntity.GetDeveloper
belirten bir ExtractVariables politikasında tanımlanan XPath kullanılarak ayrıştırılabilir.
Hata referansı
İlgili bilgiler için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.
Çalışma zamanı hataları
Yok.
Dağıtım hataları
Hata adı | Hata dizesi | HTTP durumu | Gerçekleşme zamanı: |
---|---|---|---|
InvalidEntityType |
Invalid type [entity_type] in ACCESSENTITYStepDefinition
[policy_name] |
Yok | Kullanılan varlık türü, desteklenen türlerden biri olmalıdır. |
İlgili konular
ExtractVariables
: ExtractVariables politikasıAssignMessage
: assignMessage politikası