شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
چی
نمایههای موجودیتی را که از فروشگاه داده Apigee Edge مشخص کردهاید بازیابی میکند. این خطمشی نمایه را در متغیری قرار میدهد که نام آن از قالب AccessEntity.{policy_name}
. می توانید از AccessEntity
برای دسترسی به نمایه های موجودیت های زیر استفاده کنید:
- برنامه
- محصول API
- شرکت
- توسعه دهنده شرکت
- کلید مصرف کننده
- توسعه دهنده
خط مشی AccessEntity
به عنوان جستجوی پایگاه داده زمان اجرا مبتنی بر سیاست عمل می کند. میتوانید از اطلاعات نمایه بازگردانده شده توسط این خطمشی برای فعال کردن رفتار پویا، مانند مسیریابی نقطه پایانی شرطی، اجرای جریان، اجرای خطمشی استفاده کنید.
شما از خط مشی AccessEntity
برای دریافت داده های نمایه موجودیت به عنوان XML و قرار دادن آن در یک متغیر استفاده می کنید. با تعیین یک نوع موجودیت و یک یا چند شناسه که مشخص می کند کدام موجودیت از آن نوع را می خواهید، موجودیتی را که باید دریافت کنید، شناسایی می کنید. بعداً، در یک خطمشی دیگر، میتوانید دادههای نمایه موجودیت را با خطمشی دیگری بازیابی کنید، مانند خطمشی ExtractVariables یا خطمشی AssignMessage .
نمونه ها
نمونههای زیر AccessEntity
را نشان میدهند که به همراه سیاستهای ExtractVariables
و AssignMessage
برای استخراج ایمیل یک برنامهنویس و افزودن آن به سربرگ HTTP استفاده میشود.
دریافت ایمیل برنامهنویس برای استفاده در سیاستهای دیگر
خط مشی AccessEntity
را تنظیم کنید تا مشخص کنید کدام نمایه موجودیت را از Edge دریافت کنید و همچنین مکان قرار دادن داده های نمایه را تعیین کنید.
در مثال زیر، این خطمشی با استفاده از یک کلید API که به عنوان پارامتر پرس و جو برای شناسایی توسعهدهنده ارسال میشود، یک نمایه نهاد 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"/>
پیش فرض | N/A |
حضور | مورد نیاز |
تایپ کنید | رشته |
صفات
صفت | توضیحات | پیش فرض | حضور | تایپ کنید |
---|---|---|---|---|
رجوع کنید | متغیری که منبع شناسه را فراهم می کند، مانند | N/A | مورد نیاز. | رشته |
نوع | نوع پر شده توسط متغیر در ویژگی 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"/>
پیش فرض | N/A |
حضور | مورد نیاز |
تایپ کنید | رشته |
از یک عنصر EntityIdentifier
برای تعیین اینکه کدام موجودیت از نوع داده شده را می خواهید استفاده کنید. برای مرجع انواع موجودیت، به انواع موجودیت و شناسه ها مراجعه کنید.
صفات
صفت | توضیحات | پیش فرض | حضور | تایپ کنید |
---|---|---|---|---|
ارزش | یکی از انواع موجودیت پشتیبانی شده. برای فهرست ، انواع موجودیت و شناسهها را ببینید. | هیچ کدام. | مورد نیاز. | رشته |
عنصر <SecondaryIdentifier>
در ارتباط با EntityIdentifier
، مقداری را برای شناسایی نمونه مورد نظر از EntityType
معین مشخص می کند.
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
پیش فرض | N/A |
حضور | اختیاری |
تایپ کنید | رشته |
استفاده از SecondaryIdentifier
زمانی که فقط یک EntityIdentifier
را مشخص میکنید، تضمینی برای دریافت یک موجودیت واحد نیست. برای اطلاعات بیشتر به نتایج محدود کردن با شناسههای ثانویه مراجعه کنید.
استفاده از چندین عنصر SecondaryIdentifier
پشتیبانی نمی شود.
صفات
صفت | توضیحات | پیش فرض | حضور | تایپ کنید |
---|---|---|---|---|
رجوع کنید | متغیری که منبع شناسه را فراهم می کند، مانند | N/A | مورد نیاز. | رشته |
نوع | نوع پر شده توسط متغیر در ویژگی ref. مانند consumerkey . برای لیستی از مقادیر ، انواع و شناسه های Entity را ببینید. | مورد نیاز. | رشته |
مثال
<?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 | 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 |
نمونه ای از نمایه موجودیت XML
برای بازیابی مقدار نمایه موجودیت مورد نظر با XPath، باید چیزی در مورد ساختار پروفایل XML بدانید. برای مثالی از ساختار، از یک فراخوانی مدیریت API برای دریافت XML برای موجودیت مورد نظر خود استفاده کنید. برای جزئیات، به مرجع 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
همچنین به دریافت برنامه در سازمان با شناسه برنامه در مرجع 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
همچنین به دریافت جزئیات برنامه توسعه دهنده در مرجع API مدیریت Edge مراجعه کنید.
مشخصات نمونه:
<?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 در مرجع API مدیریت لبه مراجعه کنید.
نمونه XPath، دومین منبع API (URI) را از محصول API به نام 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
همچنین به دریافت جزئیات شرکت در مرجع 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
همچنین به دریافت جزئیات کلیدی برای یک برنامه توسعه دهنده در مرجع API مدیریت 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
همچنین دریافت Developer را در مرجع API مدیریت Edge ببینید.
نمونه 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