يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات
Apigee X. المعلومات
الموضوع
لاسترداد الملفات الشخصية للكيانات التي تحدّدها من مخزن بيانات Apigee Edge. تضع السياسة
الملف الشخصي في متغيّر يتبع اسمه التنسيق AccessEntity.{policy_name}
. يمكنك
استخدام AccessEntity
للوصول إلى الملفات الشخصية للكيانات التالية:
- تطبيق
- منتج واجهة برمجة التطبيقات
- الشركة
- مطوّر الشركة
- مفتاح العميل
- المطوّر
تعمل السياسة AccessEntity
كبحث في قاعدة بيانات وقت التشغيل استنادًا إلى السياسة. يمكنك
استخدام معلومات الملف الشخصي التي تعرضها هذه السياسة لتفعيل السلوك الديناميكي، مثل
التوجيه المشروط لنقطة النهاية وتنفيذ التدفق وتنفيذ السياسات.
يمكنك استخدام السياسة AccessEntity
للحصول على بيانات الملف الشخصي للكيان بتنسيق
XML ووضعها في متغيّر. يمكنك تحديد الكيان الذي تريد الحصول عليه من خلال تحديد نوع الكيان
ومعرّف واحد أو أكثر يحدّد الكيان الذي تريده من النوع. يمكنك لاحقًا في سياسة أخرى استرداد بيانات الملف الشخصي للكيان باستخدام سياسة أخرى، مثل
سياسة استخراجVariables أو سياسة AssignMessage.
عيّنات
تعرض النماذج التالية السمة 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 التالية على استرداد البريد الإلكتروني الخاص بالمطوّر الذي تم ضبطه من خلال سياسة استخراج المتغيّرات.
<!-- 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 |
اضبط القيمة على اضبط القيمة على |
صحيح | إجراء اختياري |
async |
تم إيقاف هذه السمة نهائيًا. |
false | منهي العمل به |
العنصر <DisplayName>
استخدِم هذه السمة بالإضافة إلى السمة name
لتصنيف السياسة في محرِّر الخادم الوكيل لواجهة المستخدم الإدارية باستخدام اسم مختلف بلغة طبيعية.
<DisplayName>Policy Display Name</DisplayName>
تلقائي |
لا ينطبق إذا لم تستخدم هذا العنصر، سيتم استخدام قيمة السمة |
---|---|
التواجد في المنزل | إجراء اختياري |
Type | سلسلة |
العنصر <EntityIdentifier>
تحدد هذه السمة الكيان المعيّن -- من النوع المحدد في EntityType -- للحصول عليه.
<EntityIdentifier ref="value_variable" type="identifier_type"/>
تلقائي |
لا ينطبق |
الحضور |
مطلوبة |
النوع |
سلسلة |
السمات
السمة | الوصف | تلقائي | التواجد في المنزل | 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
لتحديد الكيان الذي تريده من النوع المعيّن. للاطّلاع على مرجع لأنواع الكيانات، يُرجى الاطّلاع على أنواع الكيانات ومعرّفاتها.
السمات
السمة | الوصف | تلقائي | التواجد في المنزل | Type |
---|---|---|---|---|
القيمة | أحد أنواع الكيانات المتاحة. للاطّلاع على قائمة، يمكنك مراجعة أنواع الكيانات ومعرّفاتها. | بلا عُري | مطلوبة. | سلسلة |
عنصر <secondaryidentifier>
جنبًا إلى جنب مع EntityIdentifier
، تحدّد قيمة لتحديد المثيل المطلوب من EntityType
المحدّد.
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
تلقائي |
لا ينطبق |
الحضور |
إجراء اختياري |
النوع |
سلسلة |
إنّ استخدام السمة SecondaryIdentifier
عند تحديد عنصر EntityIdentifier
فقط
لا يضمن حصولك على كيان واحد. لمزيد من المعلومات، راجِع حصر النتائج
باستخدام معرّفات ثانوية.
ولا يمكن استخدام عناصر SecondaryIdentifier
متعدّدة.
السمات
السمة | الوصف | تلقائي | التواجد في المنزل | Type |
---|---|---|---|---|
المرجع |
تمثّل هذه السمة المتغيّر الذي يوفّر مصدر المعرّف، مثل
|
لا ينطبق | مطلوبة. | سلسلة |
كتابة | تمثّل هذه السمة النوع الذي يعبئه المتغيّر في السمة 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>
بما أنّه يمكن ربط تطبيق بعدة منتجات لواجهة برمجة التطبيقات، قد لا يؤدي استخدام معرّف التطبيق فقط إلى عرض منتج واجهة برمجة التطبيقات الذي تريده (يمكنك الحصول فقط على المنتج الأول من بين عدة منتجات متطابقة).
بدلًا من ذلك، للحصول على نتيجة أكثر دقة، يمكنك استخدام 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 | أنواع معرّفات الكيانات | أنواع المعرّفات الثانوية |
---|---|---|
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 الخاص بالملف الشخصي. للاطّلاع على مثال على البنية، استخدِم طلب بيانات من واجهة برمجة التطبيقات للإدارة للحصول على XML للكيان الذي تريده. للحصول على التفاصيل، يُرجى الرجوع إلى مرجع واجهة برمجة التطبيقات للإدارة.
تتضمن الأقسام التالية رمزًا لاستدعاءات واجهة برمجة التطبيقات، بالإضافة إلى مثال على 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.
نموذج للملف الشخصي:
<?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 هذا مورد واجهة برمجة التطبيقات الثاني (URI) من منتج واجهة برمجة التطبيقات المسمى
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.
نموذج للملف الشخصي:
<?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.
نموذج 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 المحدّد في سياسة "الاستخراجات" التي تحدّد AccessEntity.GetDeveloper
كمصدر له.
مرجع الخطأ
للحصول على معلومات ذات صلة، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات وأخطاء المعالجة.
أخطاء في وقت التشغيل
بلا عُري
أخطاء النشر
اسم الخطأ | سلسلة الخطأ | رموز حالة HTTP | يحدث عند |
---|---|---|---|
InvalidEntityType |
Invalid type [entity_type] in ACCESSENTITYStepDefinition
[policy_name] |
لا ينطبق | يجب أن يكون نوع الكيان المستخدَم من الأنواع المتوافقة. |
مواضيع ذات صلة
ExtractVariables
: سياسة المتغيّراتAssignMessage
: سياسة تعيينMessage