Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Co
Pobiera określone profile encji z magazynu danych Apigee Edge. Zgodnie z tymi zasadami
profilu w zmiennej, której nazwa jest zgodna z formatem AccessEntity.{policy_name}
. Ty
za pomocą adresu AccessEntity
może uzyskać dostęp do profili tych podmiotów:
- Promująca aplikację
- Usługa API
- Firma
- Deweloper firmy
- Klucz konsumenta
- Deweloper
Zasada AccessEntity
działa jak oparte na zasadach wyszukiwanie bazy danych w środowisku wykonawczym. Ty
mogą używać informacji o profilu zwróconych przez tę zasadę, aby umożliwić dynamiczne zachowanie, takie jak
warunkowe kierowanie punktu końcowego, wykonywanie przepływu, egzekwowanie zasad.
Używasz zasady AccessEntity
, aby pobierać dane profilu encji jako
XML i umieszczać go w zmiennej. Aby określić encję do pobrania, wskaż encję
i co najmniej jeden identyfikator, który określa, o który element tego typu Ci chodzi. Później, za
z innej zasady, możesz pobrać dane profilu jednostki przy użyciu innej zasady, np.
ExtractZmienne zasady lub AssignMessage (zasada AssignMessage).
Przykłady
W przykładach poniżej pokazujemy, jak AccessEntity
jest używany w połączeniu z
Zasady ExtractVariables
i AssignMessage
umożliwiające wyodrębnienie
e-maila i dodaj go do nagłówka HTTP.
Uzyskiwanie adresu e-mail dewelopera do użycia w innych zasadach
Skonfiguruj zasadę AccessEntity
, aby określić, z którego profilu jednostki ma pochodzić dane
Edge, a także miejsce, w którym chcesz umieścić dane profilowe.
W poniższym przykładzie zasada otrzymuje profil jednostki developer
za pomocą
Klucz interfejsu API przekazywany jako parametr zapytania w celu identyfikacji dewelopera. Profil jest umieszczony w
o nazwie, która ma postać AccessEntity.{policy_name}
. Dlatego zmienna
ustawiona przez tę zasadę to 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>
Użyj innej zasady, aby pobrać wartość profilu jednostki ze zmiennej ustawionej przez
AccessEntity
.
W poniższym przykładzie zasada ExtractVariables
pobiera wartość z
zmienną AccessEntity.GetDeveloperProfile
ustawioną wcześniej przez
AccessEntity
Pobrana wartość jest określona jako wyrażenie XPath w kluczu
XMLPayload
element. Wyodrębniona wartość jest umieszczana w elemencie
Zmienna 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>
Poniższe zasady przypisywania wiadomości pobierają adres e-mail dewelopera ustawiony przez Wyodrębnij zmiennąs.
<!-- 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>
Odwołanie do elementu
Podstawowa struktura zasady AccessEntity
:
<AccessEntity name="policy_name"> <EntityType value="entity_type"/> <EntityIdentifier ref="entity_identifier" type="identifier_type"/> <SecondaryIdentifier ref="secondary_identifier" type="identifier_type"/> </AccessEntity>
Możesz uzyskać dostęp do wielu elementów tego samego typu, grupując je w
Element 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>
<AccessEntity> atrybuty
<AccessEntity async="false" continueOnError="false" enabled="true" name="policy_name">
W tej tabeli opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw jako Ustaw jako |
fałsz | Opcjonalnie |
enabled |
Aby egzekwować zasadę, ustaw wartość Aby wyłączyć zasadę, ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
fałsz | Wycofano |
<DisplayName> element
Używaj oprócz atrybutu name
do oznaczania zasady w
edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
Domyślny |
Nie dotyczy Jeśli pominiesz ten element, atrybut |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
<EntityIdentifier> element
Określa konkretną encję – typu podanego w typie encji – do pobrania.
<EntityIdentifier ref="value_variable" type="identifier_type"/>
Domyślnie |
Nie dotyczy |
Obecność |
Wymagane |
Typ |
Ciąg znaków |
Atrybuty
Atrybut | Opis | Domyślny | Obecność | Typ |
---|---|---|---|---|
odsyłacz |
Zmienna, która dostarcza źródło identyfikatora, np.
|
Nie dotyczy | Wymagane. | Ciąg znaków |
typ | Typ wypełniany przez zmienną w atrybucie ref. na przykład
consumerkey Zapoznaj się z sekcją Typy jednostek i identyfikatory dotyczące:
listę wartości. |
Wymagane. | Ciąg znaków |
Przykład
<?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
Określa typ encji do pobrania z magazynu danych.
<EntityType value="entity_type"/>
Domyślnie |
Nie dotyczy |
Obecność |
Wymagane |
Typ |
Ciąg znaków |
Użyj elementu EntityIdentifier
, aby określić
który typ elementu chcesz stosować. Informacje o typach elementów znajdziesz w artykule Typy i identyfikatory jednostek.
Atrybuty
Atrybut | Opis | Domyślny | Obecność | Typ |
---|---|---|---|---|
wartość | Jeden z obsługiwanych typów elementów. Zobacz Typy jednostek i identyfikatorów listy. | Brak. | Wymagane. | Ciąg znaków |
<SecondaryIdentifier> element
W połączeniu z funkcją EntityIdentifier
określa wartość identyfikującą pożądane
wystąpienia danego elementu EntityType
.
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
Domyślnie |
Nie dotyczy |
Obecność |
Opcjonalnie |
Typ |
Ciąg znaków |
Użyj SecondaryIdentifier
, gdy określasz tylko EntityIdentifier
nie gwarantuje, że otrzymasz pojedynczy element. Patrz sekcja Zawężanie
z identyfikatorami dodatkowymi.
Nie można używać wielu elementów SecondaryIdentifier
.
Atrybuty
Atrybut | Opis | Domyślny | Obecność | Typ |
---|---|---|---|---|
odsyłacz |
Zmienna, która dostarcza źródło identyfikatora, np.
|
Nie dotyczy | Wymagane. | Ciąg znaków |
typ | Typ wypełniany przez zmienną w atrybucie ref. na przykład
consumerkey Zapoznaj się z sekcją Typy jednostek i identyfikatory dotyczące:
listę wartości. |
Wymagane. | Ciąg znaków |
Przykład
<?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>
Zastosowanie
Zawężanie wyników za pomocą identyfikatorów dodatkowych
W przypadku niektórych encji podanie jednego identyfikatora może nie być wystarczająco dokładne, aby uzyskać w pobliżu. W takich przypadkach możesz użyć identyfikatora dodatkowego, aby zawęzić wyniki.
Twoja pierwsza konfiguracja zasad może wyglądać tak:
<?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>
Aplikację można powiązać z wieloma usługami API, dlatego samo użycie jej identyfikatora może nie być zwróci odpowiedni produkt API (możesz uzyskać tylko pierwszy z kilku pasujących produktów).
Aby uzyskać dokładniejszy wynik, możesz użyć SecondaryIdentifier
. Dla:
możesz mieć np. zmienne appname
i developerid
w przepływie
, bo są one domyślnie wypełniane w ramach wymiany OAuth 2.0. Możesz użyć wartości
te zmienne w zasadzie AccessEntity
, aby uzyskać szczegóły profilu dotyczące żądania
.
Bardziej szczegółowa konfiguracja zasad może wyglądać tak:
<?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>
Obsługiwane typy jednostek i identyfikatory
AccessEntity
obsługuje te typy elementów i identyfikatory.
Wartość typu encji | Typy identyfikatorów encji | Dodatkowy identyfikator |
---|---|---|
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 |
Przykładowy kod XML profilu jednostki
Aby pobrać wartość profilu jednostki, której chcesz użyć za pomocą XPath, musisz wiedzieć coś o tym zgodnie ze strukturą XML profilu. Na przykład użyj wywołania interfejsu zarządzania API, aby uzyskać XML dla wybranej encji. Szczegółowe informacje znajdziesz w materiałach o interfejsie API do zarządzania odniesienie.
Sekcje poniżej zawierają kod wywołań interfejsu API oraz przykładowy kod XML z wywołania.
Aplikacje
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \ -u email:password
Zobacz też Pobieranie aplikacji Organizacja według identyfikatora aplikacji w dokumentacji interfejsu Edge Management API.
Lub:
$ 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
Zobacz też Pobierz Szczegóły aplikacji dewelopera w dokumentacji interfejsu Edge Management API.
Przykładowy 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>
Usługa API
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apiproducts/{apiproduct_name} \ -u email:password
Zobacz też Get API Usługa w opisie interfejsu Edge Management API.
Przykładowa ścieżka XPath, pobiera drugi zasób interfejsu API (URI) z usługi API o nazwie
weather_free
:
/ApiProduct['@name=weather_free']/ApiResources/ApiResource[1]/text()
Przykładowy profil zwrócony jako 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>
Firma
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/companies/{company_name} \ -u email:password
Zobacz też Pobierz Informacje o firmie w dokumentacji interfejsu Edge Management API.
Przykładowy 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>
Deweloper firmy
$ 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
Przykładowy profil:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Developers> <Developer> <Email>ntesla@theramin.com</Email> <Role>developer</Role> </Developer> </Developers>
Klucz konsumenta
$ 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
Zobacz też . Dowiedz się więcej o kluczowych informacjach o aplikacji dewelopera w dokumentacji interfejsu Edge Management API.
Przykładowy XPath:
/Credential/ApiProducts/ApiProduct[Name='weather_free']/Status/text()
Przykładowy 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>
Deweloper
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email} \ -u email:password
Więcej informacji znajdziesz w artykule Uzyskiwanie programisty w zapoznaj się z informacjami o interfejsie Edge Management API.
Przykładowy XPath:
/Developer/Attributes/Attribute[Name='my_custom_attribute']/Value/text()
/Developer/Email/text()
Przykładowy 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>
Zmienne przepływu
Po pobraniu profilu jednostki określonego w zasadzie AccessEntity plik w formacie XML Obiekt profilu jest dodawany do kontekstu wiadomości jako zmienna. Są dostępne tak jak każde inne narzędzie. z odniesieniem do jej nazwy. Podana przez użytkownika nazwa zasady AccessEntity jest ustawiony jako prefiks nazwy zmiennej.
Jeśli na przykład zostanie wykonana zasada AccessEntity o nazwie GetDeveloper
,
profil w formacie XML jest przechowywany w zmiennej o nazwie
AccessEntity.GetDeveloper
Profil w formacie XML może zostać następnie przeanalizowany za pomocą funkcji
XPath zdefiniowaną w zasadzie Extractvariables, która wskazuje AccessEntity.GetDeveloper
jako źródła informacji.
Informacje o błędzie
Powiązane informacje znajdziesz w sekcjach Co musisz wiedzieć o błędach zasad i Postępowanie w przypadku błędów.
Błędy w czasie wykonywania
Brak.
Błędy wdrażania
Nazwa błędu | Ciąg błędu | Stan HTTP | Występuje, gdy |
---|---|---|---|
InvalidEntityType |
Invalid type [entity_type] in ACCESSENTITYStepDefinition
[policy_name] |
Nie dotyczy | Użyty typ encji musi być jednym z obsługiwanych typów. |
Powiązane artykuły
ExtractVariables
: wyodrębnianie zasadAssignMessage
: zasada AssignMessage