Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Nội dung
Truy xuất hồ sơ của thực thể mà bạn chỉ định trong kho dữ liệu Apigee Edge. Chính sách đặt
cấu hình trong một biến có tên tuân theo định dạng AccessEntity.{policy_name}
. Bạn
có thể sử dụng AccessEntity
để truy cập vào hồ sơ của các thực thể sau:
- Ứng dụng
- Sản phẩm API
- Công ty
- Nhà phát triển công ty
- Khoá dành cho người dùng
- Nhà phát triển
Chính sách AccessEntity
hoạt động như một hoạt động tra cứu cơ sở dữ liệu thời gian chạy dựa trên chính sách. Bạn
có thể sử dụng thông tin hồ sơ mà chính sách này trả về để cho phép hoạt động động, chẳng hạn như
định tuyến điểm cuối có điều kiện, thực thi luồng, thực thi chính sách.
Bạn sử dụng chính sách AccessEntity
để lấy dữ liệu hồ sơ của thực thể dưới dạng
XML rồi đặt vào một biến. Bạn xác định thực thể cần lấy bằng cách chỉ định một thực thể
loại và một hoặc nhiều giá trị nhận dạng chỉ định thực thể thuộc loại đó mà bạn muốn. Sau đó, trong
một chính sách khác, bạn có thể truy xuất dữ liệu hồ sơ thực thể bằng một chính sách khác, chẳng hạn như
Chính sách ExtractVariables hoặc chính sách AssignmentsMessage.
Mẫu
Các mẫu sau đây cho thấy AccessEntity
được sử dụng cùng với
Các chính sách ExtractVariables
và AssignMessage
để trích xuất dữ liệu của tài khoản nhà phát triển
email và thêm email đó vào tiêu đề HTTP.
Nhận email nhà phát triển để sử dụng trong các chính sách khác
Thiết lập chính sách AccessEntity
để chỉ định hồ sơ thực thể sẽ lấy từ đó
Edge, cũng như nơi đặt dữ liệu hồ sơ.
Trong ví dụ sau, chính sách nhận được một hồ sơ thực thể developer
bằng cách sử dụng một
Khoá API được truyền dưới dạng tham số truy vấn để xác định nhà phát triển. Hồ sơ được đặt trong
biến có tên sau mẫu AccessEntity.{policy_name}
. Vì vậy, biến
do chính sách này đặt sẽ là 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>
Sử dụng một chính sách khác để truy xuất giá trị hồ sơ thực thể từ biến được đặt theo
AccessEntity
.
Trong ví dụ sau, chính sách ExtractVariables
truy xuất một giá trị từ
biến AccessEntity.GetDeveloperProfile
được đặt trước đó bởi
AccessEntity
.
Lưu ý rằng giá trị truy xuất được chỉ định làm biểu thức NETWORK trong phần tử
Phần tử XMLPayload
. Giá trị được trích xuất được đặt trong một
Biến 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>
Chính sách chỉ định sau đây truy xuất email nhà phát triển do Chính sách 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>
Tham chiếu phần tử
Cấu trúc cơ bản của chính sách AccessEntity
là:
<AccessEntity name="policy_name"> <EntityType value="entity_type"/> <EntityIdentifier ref="entity_identifier" type="identifier_type"/> <SecondaryIdentifier ref="secondary_identifier" type="identifier_type"/> </AccessEntity>
Bạn có thể truy cập vào nhiều thực thể cùng loại bằng cách nhóm các thực thể đó lại
Phần tử 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> thuộc tính
<AccessEntity async="false" continueOnError="false" enabled="true" name="policy_name">
Bảng sau đây mô tả những thuộc tính chung cho tất cả phần tử mẹ của chính sách:
Thuộc tính | Mô tả | Mặc định | Sự hiện diện |
---|---|---|---|
name |
Tên nội bộ của chính sách. Giá trị của thuộc tính (Không bắt buộc) Bạn có thể dùng phần tử |
Không áp dụng | Bắt buộc |
continueOnError |
Đặt thành Đặt thành |
false | Không bắt buộc |
enabled |
Hãy đặt thành Đặt thành |
đúng | Không bắt buộc |
async |
Thuộc tính này không được dùng nữa. |
false | Không được dùng nữa |
<DisplayName> phần tử
Hãy sử dụng cùng với thuộc tính name
để gắn nhãn chính sách trong phần
trình chỉnh sửa proxy giao diện người dùng quản lý có tên ngôn ngữ tự nhiên khác.
<DisplayName>Policy Display Name</DisplayName>
Mặc định |
Không áp dụng Nếu bạn bỏ qua phần tử này, giá trị của thuộc tính |
---|---|
Sự hiện diện | Không bắt buộc |
Loại | Chuỗi |
<EntityIdentifier> phần tử
Chỉ định thực thể cụ thể (thuộc loại đã cho trong EntityType) để nhận.
<EntityIdentifier ref="value_variable" type="identifier_type"/>
Mặc định |
Không áp dụng |
Sự hiện diện |
Bắt buộc |
Loại |
Chuỗi |
Thuộc tính
Thuộc tính | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
tham chiếu |
Biến cung cấp nguồn của giá trị nhận dạng, chẳng hạn như
|
Không áp dụng | Bắt buộc. | Chuỗi |
loại | Loại được điền bởi biến trong thuộc tính tham chiếu. chẳng hạn như
consumerkey . Xem phần Các loại thực thể và giá trị nhận dạng cho
danh sách giá trị. |
Bắt buộc. | Chuỗi |
Ví dụ:
<?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> phần tử
Chỉ định loại thực thể cần truy xuất từ kho dữ liệu.
<EntityType value="entity_type"/>
Mặc định |
Không áp dụng |
Sự hiện diện |
Bắt buộc |
Loại |
Chuỗi |
Sử dụng phần tử EntityIdentifier
để chỉ định
bạn muốn thực thể nào thuộc loại cho trước. Để tham khảo các loại thực thể, hãy xem bài viết Các loại thực thể và giá trị nhận dạng.
Thuộc tính
Thuộc tính | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
value | Một trong các loại thực thể được hỗ trợ. Xem phần Các loại thực thể và giá trị nhận dạng cho một danh sách. | Không có. | Bắt buộc. | Chuỗi |
<SecondaryIdentifier> phần tử
Cùng với EntityIdentifier
, chỉ định một giá trị để xác định biến thể mong muốn
của EntityType
cho trước.
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
Mặc định |
Không áp dụng |
Sự hiện diện |
Không bắt buộc |
Loại |
Chuỗi |
Sử dụng SecondaryIdentifier
khi chỉ chỉ định một EntityIdentifier
sẽ không đảm bảo rằng bạn sẽ nhận được một pháp nhân duy nhất. Xem phần Thu hẹp
kết quả cùng giá trị nhận dạng phụ để biết thêm thông tin.
Không hỗ trợ việc sử dụng nhiều phần tử SecondaryIdentifier
.
Thuộc tính
Thuộc tính | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
tham chiếu |
Biến cung cấp nguồn của giá trị nhận dạng, chẳng hạn như
|
Không áp dụng | Bắt buộc. | Chuỗi |
loại | Loại được điền bởi biến trong thuộc tính tham chiếu. chẳng hạn như
consumerkey . Xem phần Các loại thực thể và giá trị nhận dạng cho
danh sách giá trị. |
Bắt buộc. | Chuỗi |
Ví dụ:
<?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>
Lưu ý về cách sử dụng
Thu hẹp kết quả bằng giá trị nhận dạng phụ
Đối với một số thực thể, việc cung cấp một giá trị nhận dạng có thể không đủ cụ thể để xác định thực thể mà bạn muốn. Trong những trường hợp đó, bạn có thể sử dụng giá trị nhận dạng phụ để thu hẹp kết quả.
Cấu hình chính sách rộng đầu tiên và có thể có dạng như sau:
<?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>
Do một ứng dụng có thể liên kết với nhiều sản phẩm API nên việc chỉ dùng mã ứng dụng có thể không đủ trả về sản phẩm API mà bạn muốn (bạn có thể chỉ nhận sản phẩm đầu tiên trong số nhiều sản phẩm trùng khớp).
Thay vào đó, để nhận kết quả chính xác hơn, bạn có thể sử dụng SecondaryIdentifier
. Cho
Ví dụ: bạn có thể có các biến appname
và developerid
trong luồng
bởi vì theo mặc định, các mã này được điền sẵn trong quá trình trao đổi OAuth 2.0. Bạn có thể sử dụng giá trị của
các biến đó trong chính sách AccessEntity
để nhận thông tin hồ sơ về yêu cầu
.
Chính sách cụ thể hơn của bạn có thể có cấu hình như sau:
<?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>
Các loại thực thể và giá trị nhận dạng được hỗ trợ
AccessEntity
hỗ trợ các loại thực thể và giá trị nhận dạng sau.
Giá trị EntityType | Các loại EntityIdentifier | Các loại secondaryIdentifier |
---|---|---|
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 |
Ví dụ về tệp XML của hồ sơ thực thể
Để truy xuất giá trị hồ sơ thực thể bạn muốn bằng vai trò này, bạn cần biết một số thông tin về cấu trúc của tệp XML cấu hình. Để xem ví dụ về cấu trúc, hãy sử dụng lệnh gọi API quản lý để tải XML cho thực thể bạn muốn. Để biết thông tin chi tiết, hãy tham khảo API quản lý tham khảo.
Các phần sau bao gồm mã cho lệnh gọi API, cùng với XML mẫu từ lệnh gọi.
Ứng dụng
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \ -u email:password
Xem thêm bài viết Tải ứng dụng xuống Sắp xếp theo Mã ứng dụng trong tài liệu tham khảo API quản lý Edge.
hoặc:
$ 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
Xem thêm Nhận Thông tin chi tiết về ứng dụng dành cho nhà phát triển trong tài liệu tham khảo API Quản lý Edge.
Hồ sơ mẫu:
<?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>
Sản phẩm API
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apiproducts/{apiproduct_name} \ -u email:password
Xem thêm Nhận API Product (Sản phẩm) trong tài liệu tham khảo API Quản lý Edge.
NETWORK mẫu, truy xuất tài nguyên API (URI) thứ hai từ sản phẩm API có tên
weather_free
:
/ApiProduct['@name=weather_free']/ApiResources/ApiResource[1]/text()
Hồ sơ mẫu được trả về dưới dạng 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>
Công ty
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/companies/{company_name} \ -u email:password
Xem thêm Nhận Company Details (Thông tin chi tiết về công ty) trong tài liệu tham khảo về Edge Management API.
Hồ sơ mẫu:
<?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>
Nhà phát triển công ty
$ 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
Hồ sơ mẫu:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Developers> <Developer> <Email>ntesla@theramin.com</Email> <Role>developer</Role> </Developer> </Developers>
Khoá dành cho người dùng
$ 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
Xem thêm Nhận thông tin chính về một Ứng dụng dành cho nhà phát triển trong tài liệu tham khảo API Quản lý Edge.
Tên mẫu:
/Credential/ApiProducts/ApiProduct[Name='weather_free']/Status/text()
Hồ sơ mẫu:
<?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>
Nhà phát triển
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email} \ -u email:password
Xem thêm bài viết Tìm nhà phát triển trong tài liệu tham khảo API Quản lý Edge.
Tên mẫu:
/Developer/Attributes/Attribute[Name='my_custom_attribute']/Value/text()
/Developer/Email/text()
Hồ sơ mẫu:
<?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>
Biến luồng
Khi hồ sơ thực thể được chỉ định trong chính sách AccessEntity được truy xuất, tệp có định dạng XML đối tượng hồ sơ được thêm vào ngữ cảnh thư dưới dạng một biến. Bạn có thể truy cập vào công cụ này như bất kỳ ứng dụng nào khác biến, có tham chiếu đến tên biến. Tên do người dùng cung cấp của chính sách AccessEntity được đặt làm tiền tố biến của tên biến.
Ví dụ: nếu thực thi một chính sách AccessEntity có tên là GetDeveloper
,
thì hồ sơ có định dạng XML sẽ được lưu trữ trong biến có tên
AccessEntity.GetDeveloper
Sau đó, hồ sơ có định dạng XML có thể được phân tích cú pháp bằng cách sử dụng
NETWORK được xác định trong chính sách ExtractVariables chỉ định AccessEntity.GetDeveloper
làm nguồn.
Tham chiếu lỗi
Để biết thông tin liên quan, hãy xem Những điều bạn cần biết về lỗi chính sách và Xử lý lỗi.
Lỗi thời gian chạy
Không nội dung nào.
Lỗi triển khai
Tên lỗi | Chuỗi lỗi | Trạng thái HTTP | Xảy ra khi |
---|---|---|---|
InvalidEntityType |
Invalid type [entity_type] in ACCESSENTITYStepDefinition
[policy_name] |
Không áp dụng | Loại thực thể được sử dụng phải là một trong các loại được hỗ trợ. |
Chủ đề có liên quan
ExtractVariables
: Chính sách ExtractVariablesAssignMessage
: Chính sách AssignmentsMessage