Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
![]()
Ne?
Belirttiğiniz varlık profillerini Apigee Edge veri deposundan alır. Politika, profili adı AccessEntity.{policy_name} biçiminde olan bir değişkene yerleştirir. Aşağıdaki kuruluşların profillerine erişmek için AccessEntity kullanabilirsiniz:
- Uygulama
- API ürünü
- Şirket
- Şirket geliştiricisi
- Tüketici anahtarı
- Geliştirici
AccessEntity politikası, politika tabanlı bir çalışma zamanı veritabanı araması olarak işlev görür. Koşullu uç nokta yönlendirme, akış yürütme, politika zorlama gibi dinamik davranışları etkinleştirmek için bu politika tarafından döndürülen 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 öğeyi, bir öğe türü ve bu türden hangi öğeyi istediğinizi belirten bir veya daha fazla tanımlayıcıyı belirterek tanımlarsınız. Daha sonra, başka bir politikada (ör. ExtractVariables politikası veya AssignMessage politikası) kullanarak tüzel kişilik profili verilerini alabilirsiniz.
Örnekler
Aşağıdaki örneklerde, geliştiricinin e-posta adresini ayıklayıp HTTP üst bilgisine eklemek için AccessEntity'nın ExtractVariables ve AssignMessage politikalarıyla birlikte kullanımı gösterilmektedir.
Diğer politikalarda kullanılmak üzere geliştirici e-posta adresini alma
Hangi kuruluş profilinin Edge'den alınacağını ve profil verilerinin nereye yerleştirileceğini belirtmek için AccessEntity politikasını ayarlayın.
Aşağıdaki örnekte, geliştiriciyi tanımlamak için sorgu parametresi olarak iletilen bir API anahtarı kullanılarak politikaya developer öğe profili atanı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 öğe profili değerini almak için başka bir politika kullanın.
Aşağıdaki örnekte, ExtractVariables politikası, daha önce AccessEntity tarafından ayarlanan AccessEntity.GetDeveloperProfile değişkeninden bir değer alıyor.
Alınan değerin, XMLPayload öğesinde XPath ifadesi olarak belirtildiğini unutmayın. Ayıklanan değer, 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ı tarafından ayarlanan geliştirici e-posta adresini 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ı şöyledir:
<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ürdeki birden fazla öğeye, bunları bir Identifiers öğesinde gruplandırarak erişebilirsiniz:
<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ı |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için Akış yürütmenin bir politikadan sonra bile 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 özelliğin desteği sonlandırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğe
Politikayı name özelliğine ek olarak
farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.
<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 belirli varlığı (EntityType'ta verilen türde) belirtir.
<EntityIdentifier ref="value_variable" type="identifier_type"/>
|
Varsayılan |
Yok |
|
Varlık (Presence) |
Zorunlu |
|
Tür |
Dize |
Özellikler
| Özellik | Açıklama | Varsayılan | Varlık | Tür |
|---|---|---|---|---|
| ref |
Tanımlayıcının kaynağını sağlayan değişken (ör.
|
Yok | Zorunlu. | Dize |
| tür | ref özniteliğindeki değişken tarafından doldurulan tür (ör. consumerkey). Değerlerin listesi için Varlık türleri ve tanımlayıcılar bölümüne 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 öğe türünü belirtir.
<EntityType value="entity_type"/>
|
Varsayılan |
Yok |
|
Varlık (Presence) |
Zorunlu |
|
Tür |
Dize |
Belirli bir türdeki hangi varlığı istediğinizi belirtmek için EntityIdentifier öğesini kullanın. Öğe türleriyle ilgili referans için Öğe türleri ve tanımlayıcılar başlıklı makaleyi inceleyin.
Ö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 başlıklı makaleye bakın. | Yok. | Zorunlu. | Dize |
<SecondaryIdentifier> öğesi
EntityIdentifier ile birlikte, belirli EntityType öğesinin istenen örneğini tanımlamak için bir değer belirtir.
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
|
Varsayılan |
Yok |
|
Varlık (Presence) |
İsteğe bağlı |
|
Tür |
Dize |
Yalnızca EntityIdentifier belirtirken SecondaryIdentifier kullanın. Bu, tek bir öğe elde edeceğinizi garanti etmez. Daha fazla bilgi için İkincil tanımlayıcılarla sonuçları daraltma başlıklı makaleyi inceleyin.
Birden fazla SecondaryIdentifier öğesi kullanılması desteklenmez.
Özellikler
| Özellik | Açıklama | Varsayılan | Varlık | Tür |
|---|---|---|---|---|
| ref |
Tanımlayıcının kaynağını sağlayan değişken (ör.
|
Yok | Zorunlu. | Dize |
| tür | ref özniteliğindeki değişken tarafından doldurulan tür (ör. consumerkey). Değerlerin listesi için Varlık türleri ve tanımlayıcılar bölümüne 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ı vermek, istediğiniz varlığı elde etmek için yeterli olmayabilir. Bu gibi durumlarda, sonuçları daraltmak için ikincil bir tanımlayıcı kullanabilirsiniz.
İlk ve muhtemelen geniş kapsamlı politika yapılandırmanız şu şekilde 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ğini kullanmak 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, akışta appname ve developerid değişkenleri olabilir. Çünkü bunlar, OAuth 2.0 değişimi sırasında varsayılan olarak doldurulur. İstekte bulunan uygulamayla ilgili profil ayrıntılarını almak için bu değişkenlerin değerlerini bir AccessEntity politikasında kullanabilirsiniz.
Daha ayrıntılı politika yapılandırmanız şu şekilde 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 öğe türlerini ve tanımlayıcılarını destekler.
| EntityType Değeri | EntityIdentifier Türleri | İkincil tanımlayıcı türleri |
|---|---|---|
apiproduct |
appid |
apiresource |
apiproductname |
||
appname |
apiresourcedeveloperemaildeveloperidcompanyname |
|
consumerkey |
apiresource |
|
app |
appid |
|
appname |
developeremaildeveloperidcompanyname |
|
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'si
XPath ile istediğiniz öğe profili değerini almak için profil XML'sinin yapısı hakkında bilgi sahibi olmanız gerekir. Yapı örneği için istediğiniz öğenin XML'sini almak üzere bir Management API çağrısı kullanın. Ayrıntılar için Yönetim API'si referansına bakın.
Aşağıdaki bölümlerde, API çağrılarıyla ilgili kodun yanı sıra çağrıdan alınan örnek XML de yer almaktadı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 Get App in an Organization by App ID (Uygulama Kimliğine Göre Kuruluşta Uygulama Alma) bölümüne bakı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 Get Developer App Details (Geliştirici Uygulaması Ayrıntılarını Alma) bölümüne 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ındaki Get API Product bölümüne 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()
XML olarak döndürülen örnek profil:
<?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 Get Company Details (Şirket Ayrıntılarını Alma) bölümüne 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ştiricisi
$ 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ındaki Get Key Details for a Developer App (Geliştirici Uygulaması İçin Anahtar Ayrıntılarını Alma) bölümüne 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ındaki Get Developer (Geliştiriciyi Al) bölümüne 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 bağlamına değişken olarak eklenir. Değişken adına referans verilerek diğer tüm değişkenler gibi 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 değerini belirten bir ExtractVariables politikasında tanımlanan bir 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ı