Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Ne?
Apigee Edge veri deposundan belirttiğiniz varlık profillerini alır. Bu politika,
profili AccessEntity.{policy_name}
biçiminde olan bir değişkende oluşturulur. Siz
aşağıdaki varlıkların profillerine erişmek için AccessEntity
öğesini kullanabilir:
- Uygulama
- API ürünü
- Şirket
- Şirketin geliştiricisi
- Tüketici anahtarı
- Geliştirici
AccessEntity
politikası, politikaya dayalı bir çalışma zamanı veritabanı araması işlevi görür. Siz
aşağıdaki gibi dinamik davranışları etkinleştirmek için bu politika tarafından döndürülen profil bilgilerini kullanabilir:
koşullu uç nokta yönlendirmesi, akış yürütme, politika yaptırımı.
Varlık profili verilerini şu şekilde almak için AccessEntity
politikasını kullanırsınız:
XML olarak ayarlayın ve bir değişkene yerleştirin. Alınacak varlığı, bir varlık belirterek tanımlarsınız
türü ve söz konusu türün hangi varlığı istediğinizi belirten bir veya daha fazla tanımlayıcıyı ekleyin. Daha sonra
Varlık profili verilerini başka bir politika ile alabilirsiniz (örneğin,
ExtractVariables politikası veya AssignmentMessage politikası.
Örnekler
Aşağıdaki örneklerde AccessEntity
Geliştiricinin verilerini ayıklamak için ExtractVariables
ve AssignMessage
politikaları
HTTP üstbilgisine ekleyin.
Diğer politikalarda kullanılmak üzere geliştirici e-posta adresini alma
Hangi varlık profilinden alınacağını belirtmek için AccessEntity
politikasını ayarlayın
Edge ve profil verilerinin nereye yerleştirileceği.
Aşağıdaki örnekte politika, developer
Geliştiriciyi tanımlamak için sorgu parametresi olarak iletilen API anahtarı. Profil,
değişkeni için belirtilen değer AccessEntity.{policy_name}
biçimindedir. Dolayısıyla, değişken
AccessEntity.GetDeveloperProfile
olması gerekir.
<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>
Varlık profili değerini, tarafından ayarlanan değişkenden almak için başka bir politika kullanın.
AccessEntity
.
Aşağıdaki örnekte, bir ExtractVariables
politikası
tarafından daha önce ayarlanan AccessEntity.GetDeveloperProfile
değişkeni
AccessEntity
.
Alınan değerin
XMLPayload
öğesi. Çıkarılan değer,
developer.email
değişkeni
<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 AssignmentMessage politikası, Google tarafından ayarlanan geliştirici e-postasını alır. ExtractVariables politikası.
<!-- 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ürden birden çok varlığa, bu öğeleri aynı grupta toplayarak erişebilirsiniz.
Identifiers
öğe:
<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> özellikler
<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> öğe
Alınacak belirli varlığı (EntityType'ta verilen türde) belirtir.
<EntityIdentifier ref="value_variable" type="identifier_type"/>
Varsayılan |
Yok |
Bulunma |
Zorunlu |
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; örneğin,
|
Yok | Zorunlu. | Dize |
tür | ref özelliğindeki değişken tarafından doldurulan tür. örneğin:
consumerkey Aşağıdakiler için Varlık türleri ve tanımlayıcıları:
bir değerler listesidir. |
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> öğe
Veri deposundan alınacak varlığın türünü belirtir.
<EntityType value="entity_type"/>
Varsayılan |
Yok |
Bulunma |
Zorunlu |
Tür |
Dize |
Belirtmek için bir EntityIdentifier
öğesi kullanın
istediğiniz türü seçebilirsiniz. Varlık türlerine ilişkin 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. Bkz. Varlık türleri ve tanımlayıcıları inceleyebilirsiniz. | Yok. | Zorunlu. | Dize |
<SecondaryIdentifier> öğe
EntityIdentifier
ile birlikte, istenen öğeyi tanımlamak için bir değer belirtir.
EntityType
örneğidir.
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
Varsayılan |
Yok |
Bulunma |
İsteğe bağlı |
Tür |
Dize |
Yalnızca EntityIdentifier
belirtirken SecondaryIdentifier
kullanın
tek bir tüzel kişiliğe sahip olacağınızı garanti etmez. Bkz. Daraltma
sonuçlar başlıklı makaleyi inceleyin.
Birden fazla SecondaryIdentifier
öğesi 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; örneğin,
|
Yok | Zorunlu. | Dize |
tür | ref özelliğindeki değişken tarafından doldurulan tür. örneğin:
consumerkey Aşağıdakiler için Varlık türleri ve tanımlayıcıları:
bir değerler listesidir. |
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ıklarda tek bir tanımlayıcı vermek, odaklandığınız varlığı almaya yetecek kadar spesifik olmayabilir gerekir. Bu durumlarda, sonuçları daraltmak için ikincil bir tanımlayıcı kullanabilirsiniz.
Muhtemelen geniş kapsamlı olan 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ürebilirsiniz (eşleşen birden fazla üründen yalnızca ilkini alabilirsiniz).
Bunun yerine, daha kesin sonuç almak için bir SecondaryIdentifier
kullanabilirsiniz. Örneğin,
Örneğin, akışta appname
ve developerid
değişkenleriniz olabilir
çünkü bu alanlar OAuth 2.0 değişimi sırasında varsayılan olarak doldurulur. Şu değerleri kullanabilirsiniz:
İstekle ilgili profil ayrıntılarını almak için AccessEntity
politikasındaki bu değişkenleri
uygulamasını indirin.
Daha spesifik 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 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'si
XPath ile istediğiniz varlık profili değerini almak için hakkında bir şeyler bilmeniz gerekir profil XML'sinin yapısı. Yapı örneği için bir management API çağrısıyla İstediğiniz varlık için XML. Ayrıntılar için management API'ye bakın referans.
Aşağıdaki bölümlerde, çağrıdan alınan örnek XML ile birlikte API çağrılarına yönelik kod 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
Uygulamayı Edge management API referansında Uygulama kimliğine göre düzenleme.
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 bkz. Geliştirici Uygulaması Ayrıntıları'nı inceleyin.
Ö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
API'yi alma bölümüne de bakın. Edge Management API referansındaki Ürün.
Örnek XPath, ikinci API kaynağını (URI)
weather_free
:
/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 bkz. Şirket Ayrıntıları'nı tıklayı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>
Şirketin 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
Şu kaynakları da inceleyin: Geliştirici Uygulamasının Anahtar Ayrıntılarını Edge management API referansında alı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 şurada Geliştirici Al konusuna bakın: Edge Management API referansı.
Ö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 profile nesnesi, mesaj bağlamına değişken olarak eklenir. Diğer herkes gibi değişkeni için aynı değeri gönderin. AccessEntity politikasının kullanıcı tarafından sağlanan adı değeri, 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
. XML biçimli profil daha sonra
AccessEntity.GetDeveloper
belirten bir ExtractVariables politikasında tanımlı XPath
seçeceğiz.
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
: AssignmentMessage politikası