Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
![]()
Cosa
Recupera i profili delle entità specificate dal datastore Apigee Edge. Il criterio inserisce il profilo in una variabile il cui nome segue il formato AccessEntity.{policy_name}. Puoi
utilizzare AccessEntity per accedere ai profili delle seguenti entità:
- App
- Prodotto API
- Società
- Sviluppatore dell'azienda
- Consumer key
- Sviluppatore
Il criterio AccessEntity funziona come una ricerca nel database di runtime basata su criteri. Puoi utilizzare le informazioni del profilo restituite da questo criterio per attivare il comportamento dinamico, ad esempio il routing degli endpoint condizionale, l'esecuzione del flusso e l'applicazione dei criteri.
Utilizzi la policy AccessEntity per ottenere i dati del profilo dell'entità come
XML e inserirli in una variabile. Identifichi l'entità da recuperare specificando un tipo di entità e uno o più identificatori che specificano l'entità di quel tipo che ti interessa. In un secondo momento, in
un'altra norma, puoi recuperare i dati del profilo dell'entità con un'altra norma, ad esempio una
norma ExtractVariables o AssignMessage.
Esempi
Gli esempi seguenti mostrano AccessEntity utilizzato insieme alle norme ExtractVariables e AssignMessage per estrarre l'indirizzo email di uno sviluppatore e aggiungerlo all'intestazione HTTP.
Recupero dell'email dello sviluppatore da utilizzare in altre norme
Configura il criterio AccessEntity per specificare quale profilo entità recuperare da
Edge, nonché dove inserire i dati del profilo.
Nell'esempio seguente, la policy ottiene un profilo entità developer utilizzando una chiave API passata come parametro di query per identificare lo sviluppatore. Il profilo viene inserito in una
variabile il cui nome segue il formato AccessEntity.{policy_name}. Pertanto, la variabile
impostata da questo criterio sarà 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>
Utilizza un altro criterio per recuperare il valore del profilo dell'entità dal set di variabili impostato da
AccessEntity.
Nell'esempio seguente, una policy ExtractVariables recupera un valore dalla variabile AccessEntity.GetDeveloperProfile impostata in precedenza da AccessEntity.
Tieni presente che il valore recuperato è specificato come espressione XPath nell'elemento
XMLPayload. Il valore estratto viene inserito in una
variabile 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>
La seguente policy AssignMessage recupera l'email dello sviluppatore impostata dalla policy 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>
Riferimento elemento
La struttura di base di un criterio AccessEntity è:
<AccessEntity name="policy_name"> <EntityType value="entity_type"/> <EntityIdentifier ref="entity_identifier" type="identifier_type"/> <SecondaryIdentifier ref="secondary_identifier" type="identifier_type"/> </AccessEntity>
Puoi accedere a più entità dello stesso tipo raggruppandole in un elemento
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>
Attributi <AccessEntity>
<AccessEntity async="false" continueOnError="false" enabled="true" name="policy_name">
La tabella seguente descrive gli attributi comuni a tutti gli elementi principali del criterio:
| Attributo | Descrizione | Predefinito | Presenza |
|---|---|---|---|
name |
Il nome interno del criterio. Il valore dell'attributo Se vuoi, puoi utilizzare l'elemento |
N/D | Obbligatorio |
continueOnError |
Imposta il valore su Imposta su |
falso | Facoltativo |
enabled |
Imposta il valore su Imposta |
true | Facoltativo |
async |
Questo attributo è obsoleto. |
falso | Deprecato |
<DisplayName> elemento
Da utilizzare in aggiunta all'attributo name per etichettare il criterio in
editor proxy della UI di gestione con un nome diverso e in linguaggio naturale.
<DisplayName>Policy Display Name</DisplayName>
| Predefinito |
N/D Se ometti questo elemento, il valore dell'attributo |
|---|---|
| Presenza | Facoltativo |
| Tipo | Stringa |
Elemento <EntityIdentifier>
Specifica l'entità particolare, del tipo indicato in EntityType, da recuperare.
<EntityIdentifier ref="value_variable" type="identifier_type"/>
|
Predefinita |
N/D |
|
Presenza |
Obbligatorio |
|
Tipo |
Stringa |
Attributi
| Attributo | Descrizione | Predefinito | Presenza | Tipo |
|---|---|---|---|---|
| ref |
La variabile che fornisce l'origine dell'identificatore, ad esempio
|
N/D | Obbligatorio. | Stringa |
| tipo | Il tipo compilato dalla variabile nell'attributo ref, ad esempio
consumerkey. Consulta la sezione Tipi di entità e identificatori per
un elenco di valori. |
Obbligatorio. | Stringa |
Esempio
<?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>
Elemento <EntityType>
Specifica il tipo di entità da recuperare dal datastore.
<EntityType value="entity_type"/>
|
Predefinita |
N/D |
|
Presenza |
Obbligatorio |
|
Tipo |
Stringa |
Utilizza un elemento EntityIdentifier per specificare
quale entità del tipo specificato vuoi. Per un riferimento ai tipi di entità, consulta Tipi di entità e identificatori.
Attributi
| Attributo | Descrizione | Predefinito | Presenza | Tipo |
|---|---|---|---|---|
| valore | Uno dei tipi di entità supportati. Per un elenco, consulta Tipi di entità e identificatori. | Nessuno. | Obbligatorio. | Stringa |
Elemento <SecondaryIdentifier>
Insieme a EntityIdentifier, specifica un valore per identificare l'istanza desiderata di EntityType specificato.
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
|
Predefinita |
N/D |
|
Presenza |
Facoltativo |
|
Tipo |
Stringa |
Utilizza SecondaryIdentifier quando specifichi solo un EntityIdentifier
non ti garantirà di ottenere una singola entità. Per saperne di più, consulta la sezione Restringere i risultati con gli identificatori secondari.
L'utilizzo di più elementi SecondaryIdentifier non è supportato.
Attributi
| Attributo | Descrizione | Predefinito | Presenza | Tipo |
|---|---|---|---|---|
| ref |
La variabile che fornisce l'origine dell'identificatore, ad esempio
|
N/D | Obbligatorio. | Stringa |
| tipo | Il tipo compilato dalla variabile nell'attributo ref, ad esempio
consumerkey. Consulta la sezione Tipi di entità e identificatori per
un elenco di valori. |
Obbligatorio. | Stringa |
Esempio
<?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>
Note sull'utilizzo
Restringere i risultati con gli identificatori secondari
Per alcune entità, fornire un identificatore potrebbe non essere abbastanza specifico per ottenere l'entità che ti interessa. In questi casi, puoi utilizzare un identificatore secondario per restringere i risultati.
La prima configurazione dei criteri, probabilmente ampia, potrebbe avere il seguente aspetto:
<?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>
Poiché un'app può essere associata a più prodotti API, l'utilizzo del solo ID app potrebbe non restituire il prodotto API che ti interessa (potresti ottenere solo il primo di più prodotti corrispondenti).
Per ottenere un risultato più preciso, puoi utilizzare un SecondaryIdentifier. Ad esempio, potresti avere le variabili appname e developerid nel flusso perché vengono compilate per impostazione predefinita durante uno scambio OAuth 2.0. Puoi utilizzare i valori di queste variabili in una policy AccessEntity per ottenere i dettagli del profilo nell'app richiedente.
La configurazione delle norme più specifiche potrebbe avere il seguente aspetto:
<?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>
Tipi di entità e identificatori supportati
AccessEntity supporta i seguenti tipi di entità e identificatori.
| Valore EntityType | EntityIdentifier Types | SecondaryIdentifier Types |
|---|---|---|
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 |
Esempio di XML del profilo dell'entità
Per recuperare il valore del profilo entità che ti interessa con XPath, devi conoscere la struttura dell'XML del profilo. Per un esempio della struttura, utilizza una chiamata API di gestione per ottenere l'XML per l'entità che ti interessa. Per maggiori dettagli, consulta il riferimento dell'API Management.
Le sezioni seguenti includono il codice per le chiamate API, insieme a un esempio di XML della chiamata.
App
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \ -u email:password
Consulta anche Recupera app in un'organizzazione per ID app nel riferimento API di gestione Edge.
Oppure:
$ 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
Consulta anche Recupera i dettagli dell'app per sviluppatori nel riferimento API di gestione Edge.
Profilo di esempio:
<?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>
Prodotto API
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apiproducts/{apiproduct_name} \ -u email:password
Consulta anche Recupera prodotto API nel riferimento dell'API Edge Management.
XPath di esempio, recupera la seconda risorsa API (URI) dal prodotto API denominato
weather_free:
/ApiProduct['@name=weather_free']/ApiResources/ApiResource[1]/text()
Profilo di esempio restituito in formato 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>
Società
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/companies/{company_name} \ -u email:password
Consulta anche Recupera dettagli azienda nel riferimento dell'API Edge Management.
Profilo di esempio:
<?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>
Sviluppatore dell'azienda
$ 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
Profilo di esempio:
<?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
Consulta anche Recupera i dettagli della chiave per un'app per sviluppatori nel riferimento API di gestione Edge.
XPath di esempio:
/Credential/ApiProducts/ApiProduct[Name='weather_free']/Status/text()
Profilo di esempio:
<?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>Sviluppatore
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email} \ -u email:password
Consulta anche Get Developer nella guida di riferimento dell'API di gestione Edge.
XPath di esempio:
/Developer/Attributes/Attribute[Name='my_custom_attribute']/Value/text()
/Developer/Email/text()
Profilo di esempio:
<?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>
Variabili di flusso
Quando viene recuperato il profilo dell'entità specificato nel criterio AccessEntity, l'oggetto profilo in formato XML viene aggiunto al contesto del messaggio come variabile. È possibile accedervi come a qualsiasi altra variabile, facendo riferimento al nome della variabile. Il nome fornito dall'utente della policy AccessEntity è impostato come prefisso della variabile del nome della variabile.
Ad esempio, se viene eseguita una policy AccessEntity con il nome GetDeveloper,
il profilo in formato XML viene memorizzato nella variabile denominata
AccessEntity.GetDeveloper. Il profilo in formato XML può quindi essere analizzato utilizzando un
XPath definito in un criterio ExtractVariables che specifica AccessEntity.GetDeveloper
come origine.
Messaggi di errore
Per informazioni correlate, consulta Informazioni importanti sugli errori delle norme e Gestire gli errori.
Errori di runtime
Nessuno.
Errori di deployment
| Nome dell'errore | Stringa di errore | Stato HTTP | Si verifica quando |
|---|---|---|---|
InvalidEntityType |
Invalid type [entity_type] in ACCESSENTITYStepDefinition
[policy_name] |
N/D | Il tipo di entità utilizzato deve essere uno dei tipi supportati. |
Argomenti correlati
ExtractVariables: norma ExtractVariablesAssignMessage: policy AssignMessage