Halaman ini berlaku untuk Apigee dan Apigee Hybrid.
Baca dokumentasi Apigee Edge.
Apa
Mengambil profil entity yang Anda tentukan dari penyimpanan data Apigee. Kebijakan ini menempatkan
profil dalam variabel yang namanya mengikuti format AccessEntity.{policy_name}
. Anda
dapat menggunakan AccessEntity
untuk mengakses profil entitas berikut:
- Aplikasi
- Produk API
- Kunci konsumen
- Developer
Kebijakan AccessEntity
berfungsi sebagai pencarian database runtime berbasis kebijakan. Anda
dapat menggunakan informasi profil yang ditampilkan oleh kebijakan ini untuk mengaktifkan perilaku dinamis, seperti
perutean endpoint bersyarat, eksekusi alur, penerapan kebijakan.
Gunakan kebijakan AccessEntity
untuk mendapatkan data profil entity sebagai
XML (atau JSON dalam Apigee Hybrid) dan memasukkannya ke dalam variabel. Identifikasi entity
yang akan didapatkan dengan menentukan jenis
entity dan satu atau beberapa ID yang menentukan entity dari jenis tersebut yang Anda inginkan. Kemudian, di
kebijakan lain, Anda dapat mengambil data profil entity dengan kebijakan lain, seperti
kebijakan ExtractVariables atau kebijakanAssignMessage.
Kebijakan ini merupakan Kebijakan yang dapat diperluas, dan penggunaan kebijakan ini mungkin memiliki implikasi biaya atau pemanfaatan, bergantung pada lisensi Apigee Anda. Untuk mengetahui informasi tentang jenis kebijakan dan implikasi penggunaan, lihat Jenis kebijakan.
Akses entity AppGroups dari AccessEntity
Anda juga dapat menggunakan AccessEntity
untuk mengambil entity AppGroup. Lihat
ID dan jenis entitas yang didukung untuk entitas terkait.
Untuk informasi tentang AppGroups dan fungsi yang didukung, lihat Menggunakan AppGroups untuk mengatur kepemilikan aplikasi.
Sampel
Contoh berikut menunjukkan AccessEntity
yang digunakan bersama dengan kebijakan ExtractVariables
dan AssignMessage
untuk mengekstrak email developer dan menambahkannya ke header HTTP.
Mendapatkan email developer untuk digunakan dalam kebijakan lain
Siapkan kebijakan AccessEntity
untuk menentukan profil entity yang akan diambil dari Apigee, serta tempat untuk menempatkan data profil.
Dalam contoh berikut, kebijakan mendapatkan profil entity developer
, menggunakan
kunci API yang diteruskan sebagai parameter kueri untuk mengidentifikasi developer. Profil ditempatkan dalam
variabel yang namanya mengikuti format AccessEntity.{policy_name}
. Jadi, variabel
yang ditetapkan oleh kebijakan ini adalah AccessEntity.GetDeveloperProfile
.
<AccessEntity name="GetDeveloperProfile"> <!-- This is the type entity whose profile we need to pull from the Apigee 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>
Gunakan kebijakan lain untuk mengambil nilai profil entity dari variabel yang ditetapkan oleh
AccessEntity
.
Pada contoh berikut, kebijakan ExtractVariables
mengambil nilai dari
variabel AccessEntity.GetDeveloperProfile
yang ditetapkan sebelumnya oleh
AccessEntity
.
Perhatikan bahwa nilai yang diambil ditentukan sebagai ekspresi XPath dalam
elemen XMLPayload
. Nilai yang diekstrak ditempatkan di
variabel developer.email
.
<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>
KebijakanAssignMessage berikut mengambil email developer yang ditetapkan oleh kebijakan ExtractVariables.
<!-- 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>
Referensi elemen
Dasar struktur kebijakan AccessEntity
adalah:
<AccessEntity name="policy_name"> <EntityType value="entity_type"/> <EntityIdentifier ref="entity_identifier" type="identifier_type"/> <SecondaryIdentifier ref="secondary_identifier" type="identifier_type"/> </AccessEntity>
Anda dapat mengakses beberapa entity dari jenis yang sama dengan mengelompokkannya dalam elemen Identifiers
:
<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>
Atribut <AccessEntity>
<AccessEntity async="false" continueOnError="false" enabled="true" name="policy_name">
Tabel berikut menjelaskan atribut yang sama untuk semua elemen induk kebijakan:
Atribut | Deskripsi | Default | Kehadiran |
---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Atau, gunakan elemen |
T/A | Diperlukan |
continueOnError |
Setel ke Setel ke |
false | Opsional |
enabled |
Setel ke Setel ke |
true | Opsional |
async |
Atribut ini sudah tidak digunakan lagi. |
false | Tidak digunakan lagi |
Elemen <DisplayName>
Gunakan selain atribut name
untuk memberi label kebijakan di
editor proxy UI pengelolaan dengan nama natural-language yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
Default |
T/A Jika Anda menghapus elemen ini, nilai atribut |
---|---|
Kehadiran | Opsional |
Jenis | String |
Elemen <EntityIdentifier>
Menentukan entity tertentu -- dari jenis yang diberikan dalam EntityType -- yang akan didapatkan.
<EntityIdentifier ref="value_variable" type="identifier_type"/>
Default | T/A |
---|---|
Kehadiran | Diperlukan |
Jenis | String |
Atribut
Atribut | Deskripsi | Default | Kehadiran | Jenis |
---|---|---|---|---|
referensi |
Variabel yang menyediakan sumber ID, seperti
|
T/A | Diperlukan | String |
jenis | Jenis yang diisi oleh variabel dalam atribut ref, seperti
consumerkey . Lihat ID dan jenis entity yang didukung untuk
mengetahui daftar nilai. |
Diperlukan | String |
Contoh
<?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>
Elemen <EntityType>
Menentukan jenis entity yang akan diambil dari penyimpanan data.
<EntityType value="entity_type"/>
Default | T/A |
---|---|
Kehadiran | Diperlukan |
Jenis | String |
Gunakan elemen EntityIdentifier
untuk menentukan entity dari jenis tertentu yang Anda inginkan. Untuk referensi tentang jenis entitas, lihat Jenis dan ID entitas yang didukung.
Atribut
Atribut | Deskripsi | Default | Kehadiran | Jenis |
---|---|---|---|---|
value | Salah satu jenis entity yang didukung. Lihat ID dan jenis entitas yang didukung untuk mengetahui daftarnya. | Tidak ada | Diperlukan | String |
Elemen <OutputFormat>
Menentukan format yang ditampilkan oleh kebijakan AccessEntity: XML atau JSON.
<OutputFormat>XML</OutputFormat>
Default |
XML Jika Anda menghilangkan elemen ini, nilainya akan ditetapkan secara default ke XML. |
---|---|
Kehadiran | Opsional |
Jenis | String (XML atau JSON) |
Elemen <SecondaryIdentifier>
Bersama dengan EntityIdentifier
, menentukan nilai untuk mengidentifikasi instance yang diinginkan dari EntityType
yang ditentukan.
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
Default | T/A |
---|---|
Kehadiran | Opsional |
Jenis | String |
Menggunakan SecondaryIdentifier
saat menentukan EntityIdentifier
saja
tidak akan menjamin bahwa Anda mendapatkan satu entity. Lihat Mempersempit
hasil dengan ID sekunder untuk mengetahui informasi selengkapnya.
Penggunaan beberapa elemen SecondaryIdentifier
tidak didukung.
Atribut
Atribut | Deskripsi | Default | Kehadiran | Jenis |
---|---|---|---|---|
referensi |
Variabel yang menyediakan sumber ID, seperti
|
T/A | Diperlukan | String |
jenis | Jenis yang diisi oleh variabel dalam atribut ref, seperti
consumerkey . Lihat ID dan jenis entity yang didukung untuk
mengetahui daftar nilai. |
Diperlukan | String |
Contoh
<?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>
Catatan penggunaan
Mempersempit hasil dengan ID sekunder
Untuk beberapa entity, memberikan satu ID mungkin tidak cukup spesifik untuk mendapatkan entity yang Anda inginkan. Dalam kasus tersebut, Anda dapat menggunakan ID sekunder untuk mempersempit hasil.
Konfigurasi kebijakan pertama yang mungkin luas mungkin terlihat seperti ini:
<?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>
Karena aplikasi dapat dikaitkan dengan beberapa produk API, penggunaan ID aplikasi saja mungkin tidak akan menampilkan produk API yang Anda inginkan (Anda hanya bisa mendapatkan produk pertama dari beberapa produk yang cocok).
Sebagai gantinya, untuk mendapatkan hasil yang lebih tepat, Anda dapat menggunakan SecondaryIdentifier
. Misalnya, Anda mungkin memiliki variabel appname
dan developerid
dalam alur karena variabel tersebut diisi secara default selama pertukaran OAuth 2.0. Anda dapat menggunakan nilai
variabel tersebut dalam kebijakan AccessEntity
untuk mendapatkan detail profil di aplikasi
yang meminta.
Konfigurasi kebijakan yang lebih spesifik mungkin terlihat seperti ini:
<?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>
Jenis dan ID entity yang didukung
AccessEntity
mendukung jenis dan ID entity berikut.
Nilai EntityType | Jenis EntityIdentifier | Jenis SecondaryIdentifier |
---|---|---|
apiproduct |
appid |
apiresource |
apiproductname |
||
appname |
apiresource developeremail developerid appgroupname |
|
consumerkey |
apiresource |
|
app |
appid |
|
appname |
developeremail developerid appgroupname |
|
consumerkey |
||
authorizationcode |
authorizationcode |
|
appgroupname |
appid appgroupname consumerkey |
|
consumerkey |
||
consumerkey |
consumerkey |
|
consumerkey_scope |
consumerkey |
|
developer |
appid |
|
consumerkey |
||
developeremail |
||
developerid |
||
requesttoken |
requesttoken |
consumerkey |
verifier |
verifier |
Contoh XML profil entitas
Untuk mengambil nilai profil entity yang diinginkan dengan XPath, Anda harus mengetahui struktur XML profil. Untuk contoh struktur, gunakan panggilan API Apigee untuk mendapatkan XML untuk entity yang Anda inginkan. Untuk mengetahui detailnya, lihat Referensi API Apigee.
Bagian berikut menyertakan kode untuk panggilan API, bersama dengan contoh XML dari panggilan.
Aplikasi
curl https://apigee.googleapis.com/v1/organizations/$ORG/apps/$APP \ -X GET \ -H "Accept:text/xml" \ -H "Authorization: Bearer $TOKEN"
Lihat juga Mendapatkan aplikasi berdasarkan ID aplikasi dalam referensi Apigee API.
Atau:
$ curl https://apigee.googleapis.com/v1/organizations/$ORG/developers/$DEVELOPER_EMAIL/apps/$APP \ -X GET \ -H "Accept:text/xml" \ -H "Authorization: Bearer $TOKEN"
Lihat juga Mendapatkan detail aplikasi developer dalam referensi Apigee API.
Contoh 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>
Produk API
curl https://apigee.googleapis.com/v1/organizations/$ORG/apiproducts/$APIPRODUCT \ -X GET \ -H "Accept:text/xml" \ -H "Authorization: Bearer $TOKEN"
Lihat juga Mendapatkan produk API dalam referensi API Apigee.
Contoh XPath, mengambil resource API (URI) kedua dari produk API bernama
weather_free
:
/ApiProduct['@name=weather_free']/ApiResources/ApiResource[1]/text()
Contoh profil yang ditampilkan sebagai XML:
<?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>
Kunci konsumen
curl https://apigee.googleapis.com/v1/organizations/$ORGdevelopers/$DEVELOPER_EMAIL/apps/$APP/keys/$KEY \ -X GET \ -H "Accept:text/xml" \ -H "Authorization: Bearer $TOKEN"
Lihat juga Mendapatkan detail kunci untuk aplikasi developer dalam referensi Apigee API.
Contoh XPath:
/Credential/ApiProducts/ApiProduct[Name='weather_free']/Status/text()
Contoh 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>
Developer
curl https://apigee.googleapis.com/v1/organizations/$ORGdevelopers/$DEVELOPER_EMAIL \ -X GET \ -H "Accept:text/xml" \ -H "Authorization: Bearer $TOKEN"
Lihat juga Dapatkan developer dalam referensi API Apigee.
Contoh XPath:
/Developer/Attributes/Attribute[Name='my_custom_attribute']/Value/text()
/Developer/Email/text()
Contoh 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>
Variabel alur
Saat profil entity yang ditentukan dalam kebijakan AccessEntity
diambil, objek profil akan ditambahkan ke konteks pesan sebagai variabel. Variabel ini dapat diakses seperti variabel
lainnya, dengan referensi ke nama variabel tersebut. Nama kebijakan AccessEntity
yang diberikan pengguna
ditetapkan sebagai awalan variabel nama variabel.
Misalnya, jika kebijakan AccessEntity
dengan nama GetDeveloper
dijalankan,
profil akan disimpan dalam variabel bernama
AccessEntity.GetDeveloper
. Profil kemudian dapat diurai menggunakan XPath yang ditentukan dalam kebijakan ExtractVariables yang menentukan AccessEntity.GetDeveloper
sebagai sumbernya.
Referensi error
Untuk informasi terkait, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani kesalahan.
Error runtime
Tidak ada.
Error saat deployment
Nama error | String kesalahan | Status HTTP | Terjadi saat |
---|---|---|---|
InvalidEntityType |
Invalid type [entity_type] in ACCESSENTITYStepDefinition
[policy_name] |
T/A | Jenis entity yang digunakan harus merupakan salah satu jenis yang didukung. |
Topik terkait
ExtractVariables
: Kebijakan ExtractVariableAssignMessage
: KebijakanAssignMessage