درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
![]()
چه
نمایههای نهادی را که مشخص کردهاید از مخزن داده Apigee Edge بازیابی میکند. این خطمشی نمایه را در متغیری قرار میدهد که نام آن از قالب AccessEntity.{policy_name} پیروی میکند. میتوانید از AccessEntity برای دسترسی به نمایههای نهادهای زیر استفاده کنید:
- برنامه
- محصول میانای برنامهسازی کاربردی
- شرکت
- توسعهدهنده شرکت
- کلید مصرفکننده
- توسعهدهنده
خطمشی AccessEntity بهعنوان جستجوی پایگاه داده زمان اجرای مبتنی بر خطمشی عمل میکند. میتوانید از اطلاعات نمایهای که این خطمشی برمیگرداند برای فعال کردن رفتار پویا، مثل مسیریابی نقطه پایانی شرطی، اجرای جریان، و اجرای خطمشی استفاده کنید.
از خطمشی AccessEntity برای دریافت دادههای نمایه نهاد بهصورت
XML و قرار دادن آن در متغیر استفاده میکنید. با مشخص کردن نوع نهاد و یک یا چند شناسه که مشخص میکنند کدام نهاد از آن نوع را میخواهید، نهاد موردنظرتان را برای دریافت شناسایی میکنید. بعداً، در خطمشی دیگری، میتوانید دادههای نمایه نهاد را با خطمشی دیگری، مثل خطمشی
ExtractVariables policy یا AssignMessage policy، بازیابی کنید.
نمونهها
نمونههای زیر نشان میدهد که AccessEntity چگونه همراه با خطمشیهای
ExtractVariables و AssignMessage برای استخراج ایمیل توسعهدهنده
و افزودن آن به سرایند HTTP استفاده میشود.
دریافت ایمیل توسعهدهنده برای استفاده در خطمشیهای دیگر
خطمشی AccessEntity راهاندازی کنید تا مشخص کنید کدام نمایه نهاد را از
Edge دریافت کنید و دادههای نمایه را کجا قرار دهید.
در مثال زیر، خطمشی بااستفاده از کلید میانای برنامهسازی کاربردی که بهعنوان پارامتر پُرسمان برای شناسایی توسعهدهنده ارسال شده است، نمایه نهاد developer را دریافت میکند. نمایه در متغیری قرار میگیرد که نام آن از شکل 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 تنظیم شده است بازیابی میکند.
توجه داشته باشید که مقدار بازیابیشده بهعنوان عبارت XPath در عنصر
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 | نام داخلی سیاست. مقدار مشخصه در صورت تمایل، از عنصر | N/A | مورد نیاز |
continueOnError | برای بازگرداندن خطا در صورت شکست خط مشی، روی روی | نادرست | اختیاری |
enabled | برای اجرای خط مشی روی برای خاموش کردن خط مشی، روی | درست است | اختیاری |
async | این ویژگی منسوخ شده است. | نادرست | منسوخ شده است |
عنصر <DisplayName>
علاوه بر ویژگی name برای برچسبگذاری خطمشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.
<DisplayName>Policy Display Name</DisplayName>
| پیش فرض | N/A اگر این عنصر را حذف کنید، از مقدار ویژگی |
|---|---|
| حضور | اختیاری |
| تایپ کنید | رشته |
عنصر <EntityIdentifier>
نهاد خاصی را که از نوع ارائهشده در EntityType است مشخص میکند تا دریافت شود.
<EntityIdentifier ref="value_variable" type="identifier_type"/>
|
پیشفرض |
موجود نیست |
|
حضور |
الزامی |
|
تایپ کردن |
رشته |
مشخصهها
| مشخصه | شرح | پیشفرض | حضور | نوع |
|---|---|---|---|---|
| مرجع |
متغیری که منبع شناسه را ارائه میدهد، مانند
|
موجود نیست | الزامی. | رشته |
| نوع | نوعی که متغیر در مشخصه ref پر میکند. برای نمونه
consumerkey. برای فهرست مقادیر، انواع نهاد و شناسهها را ببینید. |
الزامی. | رشته |
مثال
<?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 برای مشخص کردن
کدام نهاد از نوع دادهشده میخواهید استفاده کنید. برای مرجع انواع نهاد، انواع نهاد و شناسهها را ببینید.
مشخصهها
| مشخصه | شرح | پیشفرض | حضور | نوع |
|---|---|---|---|---|
| مقدار | یکی از انواع نهاد پشتیبانیشده. برای مشاهده فهرست، به انواع نهاد و شناسهها مراجعه کنید. | هیچکدام. | الزامی. | رشته |
عنصر <SecondaryIdentifier>
همراه با EntityIdentifier، مقداری را برای شناسایی نمونه موردنظر
از EntityType دادهشده مشخص میکند.
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
|
پیشفرض |
موجود نیست |
|
حضور |
اختیاری |
|
تایپ کردن |
رشته |
هنگام مشخص کردن فقط یک EntityIdentifier از SecondaryIdentifier استفاده کنید
این کار تضمین نمیکند که یک نهاد واحد دریافت کنید. برای اطلاعات بیشتر، محدود کردن
نتایج با شناسههای ثانویه را ببینید.
استفاده از چند عنصر SecondaryIdentifier پشتیبانی نمیشود.
مشخصهها
| مشخصه | شرح | پیشفرض | حضور | نوع |
|---|---|---|---|---|
| مرجع |
متغیری که منبع شناسه را ارائه میدهد، مانند
|
موجود نیست | الزامی. | رشته |
| نوع | نوعی که متغیر در مشخصه ref پر میکند. برای نمونه
consumerkey. برای فهرست مقادیر، انواع نهاد و شناسهها را ببینید. |
الزامی. | رشته |
مثال
<?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>
یادداشتهای استفاده
محدود کردن نتایج با شناسههای ثانویه
برای برخیاز نهادها، ارائه یک شناسه ممکن است برای دریافت نهاد موردنظرتان بهاندازه کافی دقیق نباشد. در این موارد، میتوانید از یک شناسه ثانویه برای محدود کردن نتایج استفاده کنید.
اولین پیکربندی خطمشی شما که احتمالاً گسترده است ممکن است به این شکل باشد:
<?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 مرتبط باشد، استفاده از شناسه برنامه بهتنهایی ممکن است محصول 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>
انواع و شناسههای نهاد پشتیبانیشده
AccessEntity از انواع نهاد و شناسههای زیر پشتیبانی میکند.
| مقدار EntityType | انواع EntityIdentifier | انواع شناسه ثانویه |
|---|---|---|
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 نمایه اطلاعاتی داشته باشید. برای نمونهای از ساختار، از فراخوانی API مدیریت برای دریافت XML برای نهادی که میخواهید استفاده کنید. برای جزئیات، به مرجع میانای برنامهسازی کاربردی مدیریت مراجعه کنید.
بخشهای زیر شامل کد برای تماسهای API، همراه با نمونه XML از تماس است.
برنامهها
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \ -u email:password
همچنین دریافت برنامه در سازمان براساس شناسه برنامه را در مرجع میانای برنامهسازی کاربردی مدیریت Edge ببینید.
یا:
$ 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>
محصول میانای برنامهسازی کاربردی
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apiproducts/{apiproduct_name} \ -u email:password
همچنین دریافت میانای برنامهسازی کاربردی محصول را در مرجع میانای برنامهسازی کاربردی مدیریت Edge ببینید.
نمونه XPath، دومین منبع API (نشانی وب) را از محصول API با نام
weather_free بازیابی میکند:
/ApiProduct['@name=weather_free']/ApiResources/ApiResource[1]/text()
نمایه نمونه بهعنوان زبان نشانهگذاری توسعهپذیر برگردانده شد:
<?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» ببینید.
نمایه نمونه:
<?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» ببینید.
نمونه 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 بهعنوان پیشوند متغیر نام متغیر تنظیم میشود.
برای مثال، اگر خطمشی AccessEntity با نام GetDeveloper اجرا شود،
نمایه با قالب XML در متغیری با نام
AccessEntity.GetDeveloper ذخیره میشود. سپس نمایه با قالب XML را میتوان بااستفاده از
XPath تعریفشده در خطمشی ExtractVariables که AccessEntity.GetDeveloper
را بهعنوان منبع خود مشخص میکند تجزیه کرد.
مرجع خطا
برای اطلاعات مرتبط، به آنچه باید در مورد خطاهای خط مشی و خطاهای مدیریتی بدانید مراجعه کنید.
خطاهای زمان اجرا
هیچ یک.
خطاهای استقرار
| نام خطا | رشته خطا | وضعیت HTTP | زمانی رخ می دهد |
|---|---|---|---|
InvalidEntityType | Invalid type [entity_type] in ACCESSENTITYStepDefinition [policy_name] | N/A | نوع موجودیت مورد استفاده باید یکی از انواع پشتیبانی شده باشد. |
موضوعات مرتبط
-
ExtractVariables: خطمشی ExtractVariables -
AssignMessage: خطمشی AssignMessage