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