<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Was
Ruft von Ihnen angegebene Entitätsprofile aus dem Apigee Edge-Datenspeicher ab. Die Richtlinie platziert das Profil in einer Variablen mit dem Namen AccessEntity.{policy_name}
. Mit AccessEntity
können Sie auf Profile für die folgenden Entitäten zugreifen:
- App
- API-Produkt
- Company
- Unternehmensentwickler
- Consumer-Key
- Entwickler
Die Richtlinie AccessEntity
dient als richtlinienbasierter Laufzeitdatenbanksuche. Sie können die von dieser Richtlinie zurückgegebenen Profilinformationen verwenden, um das dynamische Verhalten zu aktivieren, z. B. bedingtes Endpunkt-Routing, Ablaufausführung und Richtlinienerzwingung.
Verwenden Sie die Richtlinie AccessEntity
, um Entitätsprofildaten als XML abzurufen und in eine Variable einzufügen. Die Entität, die Sie abrufen möchten, geben Sie an, um einen Entitätstyp und eine oder mehrere Kennzeichnungen anzugeben, die die gewünschte Entität dieses Typs angeben. Später können Sie in einer anderen Richtlinie die Entitätsprofildaten mit einer anderen Richtlinie abrufen, z. B. mit einer ExtractVariables-Richtlinie oder AssignMessage-Richtlinie.
Beispiele
Die folgenden Beispiele zeigen AccessEntity
, die in Verbindung mit den Richtlinien ExtractVariables
und AssignMessage
verwendet werden, um die E-Mail eines Entwicklers zu extrahieren und dem HTTP-Header hinzuzufügen.
E-Mail-Adresse des Entwicklers zur Verwendung in anderen Richtlinien abrufen
Richtlinie „AccessEntity
“ einrichten, um anzugeben, aus welchem Entitätsprofil abgerufen werden soll
Edge sowie den Speicherort der Profildaten.
Im folgenden Beispiel wird von der Richtlinie ein developer
-Entitätsprofil abgerufen, wobei ein API-Schlüssel als Abfrageparameter übergeben wird, um den Entwickler zu identifizieren. Das Profil wird in einer Variablen platziert, deren Name dem Format AccessEntity.{policy_name}
entspricht. Die von dieser Richtlinie festgelegte Variable wäre also AccessEntity.GetDeveloperProfile
.
<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>
Verwenden Sie eine andere Richtlinie, um den Wert des Entitätsprofils aus der von AccessEntity
festgelegten Variablen abzurufen.
Im folgenden Beispiel wird ein ExtractVariables
ruft die Richtlinie einen Wert aus der AccessEntity.GetDeveloperProfile
zuvor festgelegte Variable
AccessEntity
, um die Option zu aktivieren.
Beachten Sie, dass der abgerufene Wert als XPath-Ausdruck im Element XMLPayload
angegeben wird. Der extrahierte Wert wird in eine developer.email
-Variable eingefügt.
<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>
Mit der folgenden Zuweisungsrichtlinie wird die Entwickler-E-Mail-Adresse abgerufen, die von der Richtlinie "ExtractVariables" festgelegt wurde.
<!-- 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>
Elementverweis
Die Grundstruktur einer AccessEntity
-Richtlinie lautet:
<AccessEntity name="policy_name"> <EntityType value="entity_type"/> <EntityIdentifier ref="entity_identifier" type="identifier_type"/> <SecondaryIdentifier ref="secondary_identifier" type="identifier_type"/> </AccessEntity>
Sie können auf mehrere Entitäten desselben Typs zugreifen, indem Sie sie in einem Identifiers
- Element gruppieren:
<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>-Attribute
<AccessEntity async="false" continueOnError="false" enabled="true" name="policy_name">
In der folgenden Tabelle werden Attribute beschrieben, die für alle übergeordneten Richtlinienelemente gelten:
Attribut | Beschreibung | Standard | Präsenz |
---|---|---|---|
name |
Der interne Name der Richtlinie. Der Wert des Attributs Optional können Sie das Element |
– | Erforderlich |
continueOnError |
Legen Sie Legen Sie |
false | Optional |
enabled |
Setzen Sie den Wert auf Legen Sie |
true | Optional |
async |
Dieses Attribut wurde verworfen. |
false | Veraltet |
<DisplayName>-Element
Wird zusätzlich zum Attribut name
verwendet, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen Namen in einer natürlichen Sprache zu versehen.
<DisplayName>Policy Display Name</DisplayName>
Standardeinstellung |
– Wenn Sie dieses Element weglassen, wird der Wert des Namensattributs |
---|---|
Präsenz | Optional |
Typ | String |
<EntityIdentifier>-Element
Gibt die spezifische Entität – des Typs in EntityType - an, der abgerufen werden soll.
<EntityIdentifier ref="value_variable" type="identifier_type"/>
Standard |
– |
Präsenz |
Erforderlich |
Typ |
String |
Attribute
Attribut | Beschreibung | Standard | Präsenz | Typ |
---|---|---|---|---|
ref |
Die Variable, die die Quelle der ID angibt, z. B. |
– | Erforderlich: | String |
Typ | Der Typ, der von der Variable im "ref"-Attribut ausgefüllt wird. wie consumerkey . Eine Liste der Werte finden Sie unter Entitätstypen und -kennungen. |
Erforderlich: | String |
Beispiel
<?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>-Element
Gibt den Entitätstyp an, der aus dem Datenspeicher abgerufen werden soll.
<EntityType value="entity_type"/>
Standard |
– |
Präsenz |
Erforderlich |
Typ |
String |
Mit dem EntityIdentifier
-Element kannst du die gewünschte Entität des angegebenen Typs angeben. Eine Referenz zu Entitätstypen finden Sie unter Entitätstypen und -kennzeichnungen.
Attribute
Attribut | Beschreibung | Standard | Präsenz | Typ |
---|---|---|---|---|
Wert | Einer der unterstützten Entitätstypen. Eine Liste finden Sie unter Entitätstypen und -kennzeichnungen. | – | Erforderlich. | String |
<SecondaryIdentifier>-Element
Gibt in Verbindung mit EntityIdentifier
einen Wert an, um die gewünschte Instanz des angegebenen EntityType
zu identifizieren.
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
Standard |
– |
Präsenz |
Optional |
Typ |
String |
Verwenden Sie SecondaryIdentifier
, wenn Sie nur eine EntityIdentifier
angeben, ist nicht garantiert, dass Sie eine einzelne Entität erhalten. Weitere Informationen finden Sie unter Ergebnisse mit sekundären Kennzeichnungen einschränken.
Die Verwendung mehrerer SecondaryIdentifier
-Elemente wird nicht unterstützt.
Attribute
Attribut | Beschreibung | Standard | Präsenz | Typ |
---|---|---|---|---|
ref |
Die Variable, die die Quelle der ID angibt, z. B. |
– | Erforderlich: | String |
Typ | Der Typ, der von der Variable im "ref"-Attribut ausgefüllt wird. wie consumerkey . Eine Liste der Werte finden Sie unter Entitätstypen und -kennungen. |
Erforderlich: | String |
Beispiel
<?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>
Verwendungshinweise
Die Ergebnisse mit sekundären Kennungen eingrenzen
Bei einigen Entitäten ist die Zuweisung einer ID möglicherweise nicht spezifisch genug, um die gewünschte Entität zu erhalten. In diesen Fällen können Sie eine sekundäre Kennzeichnung verwenden, um die Ergebnisse einzugrenzen.
Ihre erste, möglicherweise allgemeine Richtlinienkonfiguration könnte so aussehen:
<?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>
Da eine Anwendung mit mehreren API-Produkten verknüpft werden kann, kann die Verwendung der Anwendungs-ID möglicherweise nicht das gewünschte API-Produkt zurückgeben. Sie erhalten nur das erste von mehreren übereinstimmenden Produkten.
Stattdessen können Sie ein SecondaryIdentifier
verwenden, um ein genaueres Ergebnis zu erhalten. Beispiel: Sie haben die Variablen appname
und developerid
im Ablauf, da sie standardmäßig während eines OAuth 2.0-Austauschs ausgefüllt werden. Sie können die Werte dieser Variablen in einer AccessEntity
-Richtlinie verwenden, um Profildetails zur anfragenden Anwendung abzurufen.
Ihre spezifischere Richtlinienkonfiguration könnte so aussehen:
<?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>
Unterstützte Entitätstypen und -kennzeichnungen
AccessEntity
unterstützt die folgenden Entitätstypen und -kennzeichnungen.
EntityType-Wert | EntityIdentifier-Typen | Sekundäre ID-Typen |
---|---|---|
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 |
Beispiel für eine XML-Entitätsprofil-XML
Um den gewünschten Entitätsprofilwert mit XPath abzurufen, müssen Sie etwas über die Struktur der Profil-XML wissen. Verwenden Sie zum Beispiel einen Verwaltungs-API-Aufruf, um XML für die gewünschte Entität. Weitere Informationen finden Sie in der Verwaltungs-API. Referenz.
Die folgenden Abschnitte enthalten Code für API-Aufrufe sowie Beispiel-XML aus dem Aufruf.
Apps
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \ -u email:password
Siehe auch App in einem Organisation nach App-ID in der Edge Management API-Referenz.
Oder:
$ 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
Siehe auch Get Entwickler-App-Details in der Edge-Management-API-Referenz.
Beispielprofil:
<?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-Produkt
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apiproducts/{apiproduct_name} \ -u email:password
Siehe auch API abrufen Produkt in der Edge-Management-API-Referenz.
Beispiel XPath, ruft die zweite API-Ressource (URI) aus dem API-Produkt weather_free
ab:
/ApiProduct['@name=weather_free']/ApiResources/ApiResource[1]/text()
Beispielprofil als XML zurückgegeben:
<?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>
Unternehmen
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/companies/{company_name} \ -u email:password
Siehe auch Get Company Details (Unternehmensdetails) in der Edge Management API-Referenz.
Beispielprofil:
<?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>
Unternehmensentwickler
$ 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
Beispielprofil:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Developers> <Developer> <Email>ntesla@theramin.com</Email> <Role>developer</Role> </Developer> </Developers>
Consumer-Key
$ 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
Siehe auch Rufen Sie wichtige Details für eine Entwickler-App in der Referenz zur Edge Management API ab.
Beispiel-XPath:
/Credential/ApiProducts/ApiProduct[Name='weather_free']/Status/text()
Beispielprofil:
<?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>
Entwickler
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email} \ -u email:password
Siehe auch Entwickler herunterladen in Referenz zur Edge-Verwaltungs-API.
Beispiel-XPath:
/Developer/Attributes/Attribute[Name='my_custom_attribute']/Value/text()
/Developer/Email/text()
Beispielprofil:
<?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>
Ablaufvariablen
Wenn das in der AccessEntity-Richtlinie angegebene Entitätsprofil abgerufen wird, wird das XML-formatierte Profilobjekt dem Nachrichtenkontext als Variable hinzugefügt. Sie kann wie jede andere Variable mit Bezug auf den Variablennamen aufgerufen werden. Der vom Nutzer bereitgestellte Name der AccessEntity-Richtlinie wird als Variablenpräfix des Variablennamens festgelegt.
Wenn beispielsweise eine AccessEntity-Richtlinie mit dem Namen GetDeveloper
ausgeführt wird, wird das XML-formatierte Profil in der Variablen AccessEntity.GetDeveloper
gespeichert. Das XML-formatierte Profil kann dann mit einem in einer ExtractVariables-Richtlinie definierten XPath geparst werden. Dabei wird AccessEntity.GetDeveloper
als Quelle angegeben.
Fehlerreferenz
Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen und Fehler beheben.
Laufzeitfehler
–
Bereitstellungsfehler
Fehlername | Fehlerstring | HTTP-Status | Tritt auf, wenn Folgendes eintritt |
---|---|---|---|
InvalidEntityType |
Invalid type [entity_type] in ACCESSENTITYStepDefinition
[policy_name] |
– | Der verwendete Entitätstyp muss einer der unterstützten Typen sein. |
Weitere Informationen
ExtractVariables
: ExtractVariables-RichtlinieAssignMessage
: AssignMessage-Richtlinie