查看 Apigee Edge 說明文件。
  前往
     Apigee X說明文件。 資訊
![]()
結果
從 Apigee Edge 資料儲存庫擷取您指定的實體設定檔。政策會將
  但名稱格式為 AccessEntity.{policy_name} 的設定檔。個人中心
  可以使用 AccessEntity 存取下列實體的設定檔:
- 應用程式
 - API 產品
 - 公司
 - 公司開發商
 - 消費者金鑰
 - 開發人員
 
AccessEntity 政策的作用是執行政策型執行階段資料庫查詢。個人中心
  這項政策傳回的設定檔資訊,即可啟用動態行為,例如
  條件式端點轉送、流程執行、政策強制執行
您使用 AccessEntity 政策取得實體設定檔資料,
  XML 檔案並貼到變數中。您可以指定實體,藉此識別要取得的實體
  類型,以及一或多個用來指定該類型實體的 ID。稍後傳送
  另一項政策,你可以透過其他政策擷取實體設定檔資料,例如將
  ExtractVariables 政策或 AssignMessage 政策。
範例
下列範例顯示 AccessEntity
  用於擷取開發人員的 ExtractVariables 和 AssignMessage 政策
  並將其新增至 HTTP 標頭。
取得用於其他政策的開發人員電子郵件地址
設定 AccessEntity 政策,指定要從哪個實體設定檔取得
      以及設定檔資料的存放位置。
在以下範例中,政策會取得 developer 實體設定檔,
      以查詢參數形式傳遞的 API 金鑰,用於識別開發人員。如果設定檔位於
      變數名稱的格式為 AccessEntity.{policy_name}。所以變數
      政策設定後的結果會是 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>
使用其他政策,從以下設定的變數中擷取實體設定檔值:
      AccessEntity。
在以下範例中,ExtractVariables 政策會從
      先前設定的 AccessEntity.GetDeveloperProfile 變數
      AccessEntity。
請注意,擷取到的值在
      XMLPayload 元素。擷取的值會放在
      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>
下列 AssignMessage 政策會擷取由 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>
元素參照
AccessEntity 政策的基本結構如下:
<AccessEntity name="policy_name"> <EntityType value="entity_type"/> <EntityIdentifier ref="entity_identifier" type="identifier_type"/> <SecondaryIdentifier ref="secondary_identifier" type="identifier_type"/> </AccessEntity>
想要存取多個同類型的實體,只要將它們歸類到
  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>屬性
<AccessEntity async="false" continueOnError="false" enabled="true" name="policy_name">
下表說明所有政策父項元素的共同屬性:
| 屬性 | 說明 | 預設 | 存在必要性 | 
|---|---|---|---|
name | 
        
           政策的內部名稱。 視需要使用   | 
        不適用 | 必填 | 
continueOnError | 
        
           如果設為「 如果設為   | 
        false | 選用 | 
enabled | 
        
           如要強制執行政策,請設為  設為   | 
        true | 選用 | 
async | 
        
           此屬性已淘汰。  | 
        false | 已淘汰 | 
<DisplayName>元素
除 name 屬性外,一併使用
  管理 UI Proxy 編輯器,使用不同的自然語言名稱。
<DisplayName>Policy Display Name</DisplayName>
| 預設 | 
           不適用 如果省略這個元素,政策的   | 
      
|---|---|
| 存在必要性 | 選用 | 
| 類型 | 字串 | 
<EntityIdentifier>元素
指定要取得的特定實體 (實體類型指定類型)。
<EntityIdentifier ref="value_variable" type="identifier_type"/>
| 
           預設  | 
        
           不適用  | 
      
| 
           外觀狀態  | 
        
           必填  | 
      
| 
           類型  | 
        
           字串  | 
      
屬性
| 屬性 | 說明 | 預設 | 存在必要性 | 類型 | 
|---|---|---|---|---|
| 參考資料 | 
           提供 ID 來源的變數,例如
            | 
        不適用 | 必填。 | 字串 | 
| 類型 | 由 ref 屬性中變數填入的類型。例如
        consumerkey。請參閱「實體類型和 ID」一文
        列出值。 | 
        必填。 | 字串 | 
範例
<?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>元素
指定要從資料儲存庫擷取的實體類型。
<EntityType value="entity_type"/>
| 
           預設  | 
        
           不適用  | 
      
| 
           外觀狀態  | 
        
           必填  | 
      
| 
           類型  | 
        
           字串  | 
      
請使用 EntityIdentifier 元素指定
  也就是您需要的指定類型實體如需實體類型的參考資料,請參閱實體類型和 ID。
屬性
| 屬性 | 說明 | 預設 | 存在必要性 | 類型 | 
|---|---|---|---|---|
| 值 | 其中一種支援的實體類型。請參閱實體類型和 ID。 | 無。 | 必填。 | 字串 | 
<SecondaryIdentifier>元素
搭配 EntityIdentifier 可指定值,以識別所需的
  指定 EntityType 的例項。
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
| 
           預設  | 
        
           不適用  | 
      
| 
           外觀狀態  | 
        
           選用  | 
      
| 
           類型  | 
        
           字串  | 
      
如果只指定 EntityIdentifier,請使用 SecondaryIdentifier
  並不保證您一定會取得單一實體。請參閱縮小
  含有次要 ID 的結果
不支援使用多個 SecondaryIdentifier 元素。
屬性
| 屬性 | 說明 | 預設 | 存在必要性 | 類型 | 
|---|---|---|---|---|
| 參考資料 | 
           提供 ID 來源的變數,例如
            | 
        不適用 | 必填。 | 字串 | 
| 類型 | 由 ref 屬性中變數填入的類型。例如
        consumerkey。請參閱「實體類型和 ID」一文
        列出值。 | 
        必填。 | 字串 | 
範例
<?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>
使用須知
使用次要 ID 縮小結果範圍
對某些實體來說,只為一個 ID 提供可能不夠具體,無法取得實體 在這種情況下,您可以使用次要 ID 縮小結果範圍。
第一項設定可能會很廣泛的政策設定,如下所示:
<?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>
由於一個應用程式可以與多個 API 產品建立關聯,因此單單使用應用程式 ID 可能不會 傳回所需的 API 產品 (您只能取得多個相符產品的第一項)。
相反地,您可以使用 SecondaryIdentifier 來取得更確切的結果。適用對象
  例如,您可以在流程中使用 appname 和 developerid 變數
  因為在 OAuth 2.0 交換庫期間,系統預設會填入這些資料。您可以使用
  這些變數都能透過 AccessEntity 政策取得
  應用程式。
具體的政策設定可能如下所示:
<?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>
支援的實體類型和 ID
AccessEntity 支援下列實體類型和 ID。
| 實體類型值 | 實體識別碼類型 | 次要 ID 類型 | 
|---|---|---|
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 | 
        
實體個人資料 XML 範例
若要使用 XPath 擷取想要的實體設定檔值,您必須知道 設定檔 XML 的結構舉例來說,如要舉例說明結構,請用 Management API 呼叫 所使用實體的 XML。詳情請參閱 management API 參考資料。
以下各節包含 API 呼叫的程式碼,以及呼叫中的 XML 範例。
應用程式
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \ -u email:password
另請參閱在 「依應用程式 ID 進行機構」,請參閱 Edge Management API 參考資料中的說明。
或:
$ 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
另請參閱取得 Edge Management API 參考資料中的開發人員應用程式詳細資料。
個人資料範例:
<?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 產品
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apiproducts/{apiproduct_name} \ -u email:password
另請參閱取得 API 產品。
XPath 範例,會從名為
  weather_free:
/ApiProduct['@name=weather_free']/ApiResources/ApiResource[1]/text()
以 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>
公司
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/companies/{company_name} \ -u email:password
另請參閱取得 Edge Management API 參考資料中的公司詳細資料。
個人資料範例:
<?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>
公司開發商
$ 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
個人資料範例:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Developers> <Developer> <Email>ntesla@theramin.com</Email> <Role>developer</Role> </Developer> </Developers>
消費者金鑰
$ 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
另請參閱 取得 Edge Management API 參考資料中的開發人員應用程式金鑰詳細資料。
XPath 範例:
/Credential/ApiProducts/ApiProduct[Name='weather_free']/Status/text()
個人資料範例:
<?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>開發人員
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email} \ -u email:password
另請參閱取得開發人員: Edge Management API 參考資料
XPath 範例:
/Developer/Attributes/Attribute[Name='my_custom_attribute']/Value/text()
/Developer/Email/text()
個人資料範例:
<?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>
流程變數
擷取 AccessEntity 政策中指定的實體設定檔時,採用 XML 格式 設定檔物件會以變數的形式加入訊息結構定義中。使用方法與任何其他應用程式相同 變數,並參照變數名稱。使用者提供的 AccessEntity 政策名稱 設為變數名稱的變數前置字串
舉例來說,如果執行名稱為 GetDeveloper 的 AccessEntity 政策,
  XML 格式設定檔會儲存在名為
  AccessEntity.GetDeveloper。XML 格式設定檔接著可使用
  在指定 AccessEntity.GetDeveloper 的 ExtractVariables 政策中定義的 XPath
  做為來源
錯誤參考資料
執行階段錯誤
無。
部署錯誤
| 錯誤名稱 | 錯誤字串 | HTTP 狀態 | 發生時機 | 
|---|---|---|---|
InvalidEntityType | 
        Invalid type [entity_type] in ACCESSENTITYStepDefinition
        [policy_name] | 
        不適用 | 使用的實體類型必須是支援的類型之一。 | 
相關主題
ExtractVariables:ExtractVariables 政策AssignMessage:AssignMessage 政策