أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
الأدوات المستخدمة
استخدِم سياسة الحصة لتحديد عدد رسائل الطلبات التي يسمح بها خادم وكيل لواجهة برمجة التطبيقات خلال فترة زمنية معيّنة، مثل دقيقة أو ساعة أو يوم أو أسبوع أو شهر. يمكنك ضبط الحصة لتكون هي نفسها لجميع التطبيقات التي يمكنها الوصول إلى خادم وكيل واجهة برمجة التطبيقات، أو يمكنك ضبط الحصة استنادًا إلى ما يلي:
- المنتج الذي يحتوي على خادم وكيل لواجهة برمجة التطبيقات
- التطبيق الذي يطلب البيانات من واجهة برمجة التطبيقات
- مطوّر التطبيق
- معايير أخرى كثيرة
لا تستخدِم الحصة لحماية نفسك من الارتفاعات المفاجئة في عدد الزيارات بشكل عام. لإجراء ذلك، استخدِم سياسة Spike Arrest. اطّلِع على سياسة Spike Arrest.
الفيديوهات
تعرض هذه الفيديوهات كيفية إدارة الحصص باستخدام سياسة الحصص:
مقدمة (New Edge)
Intro (Classic Edge)
الحصة الديناميكية
موزّعة ومتزامنة
وزن الرسالة
التقويم
النافذة المتنقّلة
Flexi
الحصة المشروطة
متغيّرات التدفق
خطأ أثناء المعالجة
نماذج
توضّح عيّنات التعليمات البرمجية الخاصة بالسياسة كيفية بدء فترات الحصة وإنهاءها من خلال:
حصة ديناميكية أكبر
<Quota name="CheckQuota"> <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval> <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit> <Allow count="200" countRef="verifyapikey.verify-api-key.apiproduct.developer.quota.limit"/> </Quota>
تتيح لك الحصص الديناميكية إعداد سياسة حصص واحدة تفرض إعدادات حصص مختلفة استنادًا إلى المعلومات التي يتم تمريرها إلى سياسة الحصص. يُطلق على إعدادات الحصة في هذا السياق اسم "خطة الخدمة". يتحقّق نظام الحصص الديناميكية من "خطة الخدمة" للتطبيقات، ثم يفرض هذه الإعدادات.
ملاحظة: إذا حدّدت قيمة ومرجعًا لعنصر ما، ستكون الأولوية للمرجع. إذا لم يتم حل المرجع في وقت التشغيل، سيتم استخدام القيمة.
على سبيل المثال، عند إنشاء منتج API، يمكنك اختياريًا ضبط الحدّ المسموح به للحصة ونوع الوحدة الزمنية والفاصل الزمني. ومع ذلك، لا يؤدي ضبط هذه القيمة على منتج واجهة برمجة التطبيقات إلى فرض استخدامها في خادم وكيل لواجهة برمجة التطبيقات. يجب أيضًا إضافة سياسة "الحصة" إلى خادم وكيل واجهة برمجة التطبيقات الذي يقرأ هذه القيم. لمزيد من المعلومات، يمكنك الاطّلاع على إنشاء منتجات واجهة برمجة التطبيقات.
في المثال أعلاه، يستخدم خادم وكيل واجهة برمجة التطبيقات الذي يتضمّن سياسة الحصة سياسة VerifyAPIKey
تُسمى verify-api-key للتحقّق من صحة مفتاح واجهة برمجة التطبيقات الذي تم تمريره في الطلب. تصل سياسة الحصة إلى متغيّرات التدفق من سياسة VerifyAPIKey لقراءة قيم الحصة المحدّدة في منتج واجهة برمجة التطبيقات. لمزيد من المعلومات عن متغيّرات سير عمل VerifyAPIKey، يُرجى الاطّلاع على سياسة Verify API Key.
هناك خيار آخر وهو ضبط سمات مخصّصة على المطوّرين أو التطبيقات الفردية، ثم قراءة هذه القيم في سياسة الحصة. على سبيل المثال، تريد ضبط قيم حصص مختلفة لكل مطوّر. في هذه الحالة، يمكنك ضبط سمات مخصّصة للمطوّر تتضمّن الحدّ الأقصى ووحدة الوقت والفاصل الزمني. بعد ذلك، يمكنك الرجوع إلى هذه القيم في سياسة الحصة كما هو موضّح أدناه:
<Quota name="DeveloperQuota"> <Identifier ref="verifyapikey.verify-api-key.client_id"/> <Interval ref="verifyapikey.verify-api-key.developer.timeInterval"/> <TimeUnit ref="verifyapikey.verify-api-key.developer.timeUnit"/> <Allow countRef="verifyapikey.verify-api-key.developer.limit"/> </Quota>
يستخدم هذا المثال أيضًا متغيّرات مسار VerifyAPIKey للإشارة إلى السمات المخصّصة التي تم ضبطها على المطوّر.
يمكنك استخدام أي متغيّر لضبط مَعلمات سياسة الحصة. يمكن أن تأتي هذه المتغيرات من:
- متغيّرات التدفق
- السمات في منتج واجهة برمجة التطبيقات أو التطبيق أو حساب المطوّر
- خريطة القيم الرئيسية (KVM)
- عنوان أو مَعلمة طلب بحث أو مَعلمة نموذج أو غير ذلك
بالنسبة إلى كل خادم وكيل لواجهة برمجة التطبيقات، يمكنك إضافة سياسة "الحصة" التي تشير إلى المتغير نفسه الذي تشير إليه جميع سياسات "الحصة" الأخرى في جميع الخوادم الوكيلة الأخرى، أو يمكن أن تشير سياسة "الحصة" إلى متغيرات فريدة لهذه السياسة والخادم الوكيل.
وقت البدء
<Quota name="QuotaPolicy" type="calendar"> <StartTime>2017-02-18 10:30:00</StartTime> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="99"/> </Quota>
بالنسبة إلى حصة type تم ضبطها على calendar، يجب تحديد قيمة <StartTime> صريحة. قيمة الوقت هي توقيت غرينتش، وليس التوقيت المحلي. إذا لم تقدّم قيمة <StartTime> لسياسة من النوع calendar، سيُصدر Edge خطأً.
يتم إعادة ضبط عدّاد الحصة لكل تطبيق استنادًا إلى قيم <StartTime> و<Interval> و<TimeUnit>. في هذا المثال، يبدأ احتساب الحصة في الساعة 10:30 صباحًا بتوقيت غرينتش في 18 شباط (فبراير) 2017، ويتم تجديدها كل 5 ساعات. لذلك، ستتم إعادة الملء التالية في الساعة 3:30 مساءً بتوقيت غرينتش في 18 شباط (فبراير) 2017.
Access Counter
<Quota name="QuotaPolicy"> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="99"/> </Quota>
يمكن لخادم وكيل لواجهة برمجة التطبيقات الوصول إلى متغيّرات التدفق التي تم ضبطها من خلال سياسة الحصة. يمكنك الوصول إلى متغيرات التدفق هذه في خادم وكيل واجهة برمجة التطبيقات لتنفيذ معالجة مشروطة أو مراقبة السياسة عند اقترابها من حد الحصة أو عرض عدّاد الحصة الحالي لتطبيق أو لأسباب أخرى.
بما أنّ الوصول إلى متغيّرات التدفق للسياسة يستند إلى السمة name في السياسات، يمكنك الوصول إلى متغيّرات التدفق للسياسة المسمّاة QuotaPolicy أعلاه بالشكل التالي:
-
ratelimit.QuotaPolicy.allowed.count: عدد مرات الظهور المسموح بها -
ratelimit.QuotaPolicy.used.count: قيمة العداد الحالية -
ratelimit.QuotaPolicy.expiry.time: يشير إلى التوقيت العالمي المتفق عليه عند إعادة ضبط العداد.
هناك العديد من متغيّرات التدفق الأخرى التي يمكنك الوصول إليها، كما هو موضّح أدناه.
على سبيل المثال، يمكنك استخدام سياسة AssignMessage التالية لعرض قيم متغيرات التدفق Quota كعناوين استجابة:
<AssignMessage async="false" continueOnError="false" enabled="true" name="ReturnQuotaVars"> <AssignTo createNew="false" type="response"/> <Set> <Headers> <Header name="QuotaLimit">{ratelimit.QuotaPolicy.allowed.count}</Header> <Header name="QuotaUsed">{ratelimit.QuotaPolicy.used.count}</Header> <Header name="QuotaResetUTC">{ratelimit.QuotaPolicy.expiry.time}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </AssignMessage>
الطلب الأول
<Quota name="MyQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Allow count="10000"/> </Quota>
استخدِم نموذج الرمز البرمجي هذا لفرض حصة تبلغ 10,000 طلب في الساعة الواحدة. تعيد السياسة ضبط عدّاد الحصة في بداية كل ساعة. إذا وصل العداد إلى حصة 10,000 مكالمة قبل نهاية الساعة، سيتم رفض المكالمات التي تتجاوز 10,000 مكالمة.
على سبيل المثال، إذا بدأ العداد عند 2017-07-08 07:00:00، ستتم إعادة ضبطه إلى 0 عند 2017-07-08 08:00:00 (بعد ساعة واحدة من وقت البدء). إذا تم تلقّي الرسالة الأولى في الساعة 2017-07-08 07:35:28 وبلغ عدد الرسائل 10,000 رسالة قبل الساعة 2017-07-08 08:00:00، سيتم رفض المكالمات التي تتجاوز هذا العدد إلى أن تتم إعادة ضبط العدد في بداية الساعة.
يستند وقت إعادة ضبط العداد إلى مجموعة من <Interval> و<TimeUnit>. على سبيل المثال، إذا ضبطت <Interval> على 12 لمدة <TimeUnit> ساعة، ستتم إعادة ضبط العداد كل اثنتي عشرة ساعة.
يمكنك ضبط <TimeUnit> على دقيقة أو ساعة أو يوم أو أسبوع أو شهر.
يمكنك الرجوع إلى هذه السياسة في مواضع متعددة في خادم وكيل واجهة برمجة التطبيقات. على سبيل المثال، يمكنك وضعه في Proxy PreFlow ليتم تنفيذه في كل طلب. أو يمكنك وضعها في تدفقات متعددة في خادم وكيل واجهة برمجة التطبيقات. إذا كنت تستخدم هذه السياسة في مواضع متعددة في الخادم الوكيل، سيتم الاحتفاظ بعدّاد واحد يتم تعديله من خلال جميع مثيلات السياسة.
بدلاً من ذلك، يمكنك تحديد سياسات حصص متعددة في خادم وكيل واجهة برمجة التطبيقات. تحتفظ كل سياسة حصة بعدّاد خاص بها استنادًا إلى السمة name للسياسة.
ضبط المعرّف
<Quota name="QuotaPolicy" type="calendar"> <Identifier ref="request.header.clientId"/> <StartTime>2017-02-18 10:00:00</StartTime> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="99"/> </Quota>
تحدّد سياسة الحصة بشكل تلقائي عدّادًا واحدًا لخادم وكيل واجهة برمجة التطبيقات، بغض النظر عن مصدر الطلب. يمكنك بدلاً من ذلك استخدام السمة <Identifier> مع سياسة الحصة للحفاظ على عدّادات منفصلة استنادًا إلى قيمة السمة <Identifier>.
على سبيل المثال، استخدِم العلامة <Identifier> لتحديد عدّادات منفصلة لكل معرّف عميل. عند إرسال طلب إلى الخادم الوكيل، يمرِّر تطبيق العميل بعد ذلك عنوانًا يحتوي على clientID، كما هو موضّح في المثال أعلاه.
يمكنك تحديد أي متغيّر تدفق لسمة <Identifier>. على سبيل المثال، يمكنك تحديد أنّ مَعلمة طلب بحث باسم id تحتوي على المعرّف الفريد:
<Identifier ref="request.queryparam.id"/>
إذا كنت تستخدم سياسة VerifyAPIKey للتحقّق من صحة مفتاح واجهة برمجة التطبيقات، أو سياسات OAuthV2 مع رموز OAuth المميزة، يمكنك استخدام المعلومات الواردة في مفتاح واجهة برمجة التطبيقات أو الرمز المميز لتحديد عدّادات فردية لسياسة الحصة نفسها. على سبيل المثال، تستخدم العلامة <Identifier> التالية المتغيّر client_id في سياسة VerifyAPIKey باسم verify-api-key:
<Identifier ref="verifyapikey.verify-api-key.client_id"></Identifier>
تحدّد كل قيمة فريدة من قيم client_id الآن عدّادها الخاص في سياسة الحصة.
الفئة
<Quota name="QuotaPolicy">
<Interval>1</Interval>
<TimeUnit>day</TimeUnit>
<Allow>
<Class ref="request.header.developer_segment">
<Allow class="platinum" count="10000"/>
<Allow class="silver" count="1000" />
</Class>
</Allow>
</Quota>يمكنك ضبط حدود الحصة بشكلٍ ديناميكي باستخدام عدد الحصص المستند إلى الفئة. في هذا المثال، يتم تحديد الحد الأقصى للحصة استنادًا إلى قيمة عنوان developer_segment الذي يتم تمريره مع كل طلب. يمكن أن تكون قيمة هذا المتغيّر platinum أو silver. إذا كان العنوان يتضمّن قيمة غير صالحة، ستعرض السياسة خطأ بشأن مخالفة الحصة.
لمحة عن سياسة الحصص
الحصة هي مجموعة من رسائل الطلبات التي يمكن لخادم وكيل لواجهة برمجة التطبيقات معالجتها خلال فترة زمنية معيّنة، مثل دقيقة أو ساعة أو يوم أو أسبوع أو شهر. تحتفظ السياسة بعدّادات تحسب عدد الطلبات التي يتلقّاها خادم وكيل واجهة برمجة التطبيقات. تتيح هذه الإمكانية لمقدّمي واجهات برمجة التطبيقات فرض حدود على عدد طلبات البيانات من واجهة برمجة التطبيقات التي تجريها التطبيقات خلال فترة زمنية معيّنة. باستخدام سياسات الحصص، يمكنك، على سبيل المثال، حصر التطبيقات بطلب واحد في الدقيقة، أو بـ 10,000 طلب في الشهر.
على سبيل المثال، إذا تم تحديد الحصة بـ 10,000 رسالة في الشهر، يبدأ الحدّ من المعدّل بعد الرسالة رقم 10,000. ولا يهم ما إذا تم احتساب 10,000 رسالة في اليوم الأول أو اليوم الأخير من تلك الفترة، إذ لا يُسمح بأي طلبات إضافية إلى أن تتم إعادة ضبط عدّاد الحصة تلقائيًا في نهاية الفترة الزمنية المحددة، أو إلى أن تتم إعادة ضبط الحصة بشكل صريح باستخدام سياسة إعادة ضبط الحصة.
تمنع سياسة SpikeArrest، وهي نوع من سياسات الحصص، الارتفاعات المفاجئة في عدد الزيارات (أو الزيادات السريعة) التي قد تحدث بسبب زيادة مفاجئة في الاستخدام أو بسبب برامج عملاء تتضمّن أخطاء أو بسبب هجمات ضارة. لمزيد من المعلومات حول SpikeArrest، يُرجى الاطّلاع على سياسة Spike Arrest.
تنطبق الحصص على خوادم وكيل API الفردية ولا يتم توزيعها بين خوادم وكيل API. على سبيل المثال، إذا كان لديك ثلاثة خوادم وكيل لواجهة برمجة التطبيقات في منتج واجهة برمجة التطبيقات، لن تتم مشاركة حصة واحدة بين جميع الخوادم الثلاثة حتى إذا كانت جميعها تستخدم إعدادات سياسة الحصة نفسها.
أنواع سياسات الحصص
تتيح سياسة الحصص عدة أنواع مختلفة من السياسات: تلقائية وcalendar وflexi وrollingwindow. يحدّد كل نوع وقت بدء احتساب الحصة ووقت إعادة ضبطها، كما هو موضّح في الجدول التالي:
| الوحدة الزمنية | إعادة الضبط على القيمة التلقائية (أو القيمة الفارغة) | إعادة ضبط التقويم | flexi reset |
|---|---|---|---|
| دقيقة | بداية الدقيقة التالية | بعد دقيقة واحدة من <StartTime> |
بعد دقيقة واحدة من الطلب الأول |
| ساعة | في بداية الساعة التالية | بعد ساعة واحدة من <StartTime> |
بعد ساعة واحدة من الطلب الأول |
| يوم | منتصف الليل بتوقيت غرينتش من اليوم الحالي | بعد 24 ساعة من <StartTime> |
بعد 24 ساعة من الطلب الأول |
| أسبوع | منتصف ليل الأحد بتوقيت غرينتش في نهاية الأسبوع | بعد أسبوع واحد من <StartTime> |
بعد أسبوع واحد من الطلب الأول |
| شهر | منتصف الليل بتوقيت غرينتش في آخر يوم من الشهر | شهر واحد (28 يومًا) بعد <StartTime> |
بعد شهر واحد (28 يومًا) من تقديم الطلب الأول |
بالنسبة إلى type="calendar"، يجب تحديد قيمة <StartTime>.
لا يعرض الجدول قيمة النوع rollingwindow. تعمل حصص النوافذ المتجددة من خلال تحديد حجم "نافذة" الحصة، مثل نافذة مدتها ساعة واحدة أو يوم واحد. عند تلقّي طلب جديد، تحدّد السياسة ما إذا تم تجاوز الحصة في "الفترة" الزمنية السابقة.
على سبيل المثال، يمكنك تحديد فترة زمنية مدتها ساعتان تسمح بإجراء 1, 000 طلب. يتم تلقّي طلب جديد في الساعة 4:45 مساءً.تحتسب السياسة عدد الحصص خلال فترة الساعتين الماضيتين، أي عدد الطلبات منذ الساعة 2:45 مساءً. إذا لم يتم تجاوز حد الحصة المسموح بها خلال فترة الساعتين هذه، سيتم السماح بالطلب.
بعد دقيقة واحدة، في الساعة 4:46 مساءً، يصل طلب آخر. تحسب السياسة الآن عدد الحصص منذ الساعة 2:46 مساءً لتحديد ما إذا تم تجاوز الحدّ الأقصى.
بالنسبة إلى النوع rollingwindow، لا تتم إعادة ضبط العداد أبدًا، ولكن تتم إعادة حسابه في كل طلب.
فهم عدّادات الحصة
تتضمّن سياسة الحصة تلقائيًا عدّادًا واحدًا، بغض النظر عن عدد المرات التي تشير فيها إلى هذه السياسة في خادم وكيل لواجهة برمجة التطبيقات. يعتمد اسم عدّاد الحصة على السمة name في السياسة.
على سبيل المثال، يمكنك إنشاء سياسة حصة باسم MyQuotaPolicy بحد أقصى يبلغ 5 طلبات ووضعها في عدة تدفقات (التدفق أ، والتطبيق ب، والتطبيق ج) في خادم وكيل لواجهة برمجة التطبيقات. على الرغم من أنّه يُستخدم في عدة مسارات، إلا أنّه يحتفظ بعدّاد واحد يتم تعديله من خلال جميع مثيلات السياسة:
- يتم تنفيذ سير العمل A -> يتم تنفيذ MyQuotaPolicy ويكون العداد الخاص به = 1
- يتم تنفيذ سير العمل B -> يتم تنفيذ MyQuotaPolicy ويصبح العداد = 2
- يتم تنفيذ سير العمل A -> يتم تنفيذ MyQuotaPolicy ويصبح العداد = 3
- يتم تنفيذ سير العمل C -> يتم تنفيذ MyQuotaPolicy ويصبح العداد = 4
- يتم تنفيذ سير العمل A -> يتم تنفيذ MyQuotaPolicy ويصبح العداد = 5
سيتم رفض الطلب التالي لأي من مسارات العمل الثلاثة لأنّ عدّاد الحصة قد بلغ الحد الأقصى.
إنّ استخدام سياسة "الحصة" نفسها في أكثر من مكان واحد في مسار خادم وكيل لواجهة برمجة التطبيقات، ما قد يؤدي عن غير قصد إلى استنفاد الحصة بشكل أسرع من المتوقّع، هو نمط سلبي موصوف في كتاب الأنماط السلبية في Apigee Edge.
بدلاً من ذلك، يمكنك تحديد سياسات حصص متعددة في خادم وكيل واجهة برمجة التطبيقات واستخدام سياسة مختلفة في كل تدفق. تحتفظ كل سياسة حصة بعدّاد خاص بها استنادًا إلى السمة name للسياسة.
أو استخدِم العنصرَين <Class> أو <Identifier> في سياسة الحصة لتحديد عدّادات متعدّدة وفريدة في سياسة واحدة. باستخدام هذه العناصر، يمكن أن تحتفظ سياسة واحدة بعدّادات مختلفة استنادًا إلى التطبيق الذي يرسل الطلب، ومطوّر التطبيق الذي يرسل الطلب، ومعرّف العميل أو معرّف عميل آخر، وغير ذلك. راجِع الأمثلة أعلاه للحصول على مزيد من المعلومات عن استخدام العنصرين <Class> أو <Identifier>.
ترميز الوقت
يتم ضبط جميع أوقات الحصة على المنطقة الزمنية للتوقيت العالمي المنسَّق (UTC).
يتبع تدوين وقت الحصة معيار التاريخ الدولي المحدّد في المعيار الدولي ISO 8601.
يتم تحديد التواريخ على النحو التالي: السنة والشهر واليوم، بالتنسيق التالي: YYYY-MM-DD.
على سبيل المثال، يمثّل 2015-02-04 4 شباط (فبراير) 2015.
يتم تحديد الوقت من اليوم بالساعات والدقائق والثواني بالتنسيق التالي:
hours:minutes:seconds. على سبيل المثال، يمثّل 23:59:59 الوقت قبل ثانية واحدة من منتصف الليل.
يُرجى العِلم أنّ هناك صيغتين، 00:00:00 و24:00:00، متاحتَين للتمييز بين منتصف الليلَين اللذين يمكن ربطهما بتاريخ واحد. وبالتالي، فإنّ 2015-02-04
24:00:00 هو التاريخ والوقت نفسيهما اللذان يمثّلهما 2015-02-05 00:00:00. ويُفضَّل عادةً استخدام الترميز الأخير.
الحصول على إعدادات الحصة من إعدادات منتج واجهة برمجة التطبيقات
يمكنك ضبط حدود الحصة في إعدادات منتج واجهة برمجة التطبيقات. ولا تفرض هذه الحدود الحصة تلقائيًا. بدلاً من ذلك، يمكنك الرجوع إلى إعدادات حصة المنتج في سياسة الحصة. في ما يلي بعض مزايا تحديد حصة للمنتج كي تشير إليها سياسات الحصص:
- يمكن أن تستخدم سياسات الحصص إعدادًا موحّدًا في جميع خوادم API الوكيلة في منتج API.
- يمكنك إجراء تغييرات في وقت التشغيل على إعداد الحصة في منتج API، وسيتم تلقائيًا تعديل قيم الحصة في سياسات الحصة التي تشير إلى القيمة.
لمزيد من المعلومات حول استخدام إعدادات الحصة من منتج واجهة برمجة تطبيقات، راجِع مثال "الحصة الديناميكية" أعلاه..
للحصول على معلومات حول إعداد منتجات واجهة برمجة التطبيقات مع حدود الحصة، يُرجى الاطّلاع على إنشاء منتجات واجهة برمجة التطبيقات.
مرجع العنصر
في ما يلي العناصر والسمات التي يمكنك ضبطها في هذه السياسة. يُرجى العِلم أنّ بعض مجموعات العناصر
تستبعد بعضها البعض أو غير مطلوبة. اطّلِع على الأمثلة لمعرفة كيفية الاستخدام. تتوفّر متغيرات verifyapikey.VerifyAPIKey.apiproduct.* أدناه تلقائيًا عند استخدام سياسة Verify API Key المسماة "VerifyAPIKey" للتحقّق من مفتاح واجهة برمجة التطبيقات في الطلب.
تأتي قيم المتغيّرات من إعدادات الحصة في منتج واجهة برمجة التطبيقات المرتبط به المفتاح، كما هو موضّح في الحصول على إعدادات الحصة من إعدادات منتج واجهة برمجة التطبيقات.
<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar"> <DisplayName>Quota 3</DisplayName> <Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/> <Allow> <Class ref="request.queryparam.time_variable"> <Allow class="peak_time" count="5000"/> <Allow class="off_peak_time" count="1000"/> </Class> </Allow> <Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval> <TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit> <StartTime>2017-7-16 12:00:00</StartTime> <Distributed>false</Distributed> <Synchronous>false</ Synchronous> <AsynchronousConfiguration> <SyncIntervalInSeconds>20</ SyncIntervalInSeconds> <SyncMessageCount>5</ SyncMessageCount> </AsynchronousConfiguration> <Identifier/> <MessageWeight/> </Quota>
سمات <Quota>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar">
السمات التالية خاصة بهذه السياسة.
| السمة | الوصف | تلقائي | التواجد في المنزل |
|---|---|---|---|
| النوع |
تُستخدَم لتحديد وقت وكيفية تحقّق عدّاد الحصة من استخدام الحصة. لمزيد من المعلومات، راجِع أنواع سياسات الحصص. في حال حذف قيمة تشمل القيم الصالحة ما يلي:
|
تقويم | اختياري |
يصف الجدول التالي السمات المشتركة بين جميع العناصر الرئيسية للسياسة:
| السمة | الوصف | تلقائي | التواجد في المنزل |
|---|---|---|---|
name |
الاسم الداخلي للسياسة. يمكن لقيمة السمة يمكنك، إذا أردت، استخدام العنصر |
لا ينطبق | مطلوب |
continueOnError |
اضبط القيمة على يمكنك ضبط القيمة على |
خطأ | اختياري |
enabled |
اضبط القيمة على اضبط القيمة على |
صحيح | اختياري |
async |
تم إيقاف هذه السمة نهائيًا. |
خطأ | منهي العمل به |
<DisplayName> عنصر
استخدِمه مع السمة name لتصنيف السياسة في
إدارة خادم وكيل لواجهة المستخدم باسم مختلف بلغة طبيعية.
<DisplayName>Policy Display Name</DisplayName>
| تلقائي |
لا ينطبق إذا لم تستخدم هذا العنصر، سيتم ضبط قيمة السمة |
|---|---|
| التواجد في المنزل | اختياري |
| النوع | سلسلة |
العنصر <Allow>
تحدّد هذه السمة الحدّ الأقصى لعدد الحصص. إذا وصل عدّاد السياسة إلى قيمة الحدّ الأقصى، سيتم رفض المكالمات اللاحقة إلى أن تتم إعادة ضبط العداد.
في ما يلي ثلاث طرق لضبط العنصر <Allow>:
<Allow count="2000"/>
<Allow countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/>
<Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/>
إذا حدّدت السمتَين count وcountRef، ستكون الأولوية للسمة countRef. إذا لم يتم حلّ countRef في وقت التشغيل، سيتم استخدام قيمة count.
| القيمة التلقائية: | لا ينطبق |
| الظهور: | اختياري |
| النوع: | عدد صحيح |
السمات
| السمة | الوصف | تلقائي | التواجد في المنزل |
|---|---|---|---|
| العدد |
يُستخدَم لتحديد عدد الرسائل المسموح بها في الحصة. على سبيل المثال، تشير قيمة السمة |
2000 | اختياري |
| countRef |
تُستخدَم لتحديد متغيّر تدفّق يحتوي على عدد الرسائل لحصة.
تكون لسياسة |
لا ينطبق | اختياري |
العنصر <Allow>/<Class>
يتيح لك العنصر <Class> تحديد قيمة العنصر <Allow> بشكل مشروط استنادًا إلى قيمة متغيّر في التدفق. بالنسبة إلى كل علامة فرعية مختلفة <Allow> من <Class>، تحتفظ السياسة بعدّاد مختلف.
لاستخدام العنصر <Class>، حدِّد متغيّرًا للتدفق باستخدام السمة ref في العلامة <Class>. يستخدم Edge بعد ذلك قيمة متغيّر التدفق
لاختيار إحدى العلامات الفرعية <Allow> لتحديد عدد السياسات المسموح به. تطابق Edge قيمة متغيّر التدفق مع السمة class
للعلامة <Allow>، كما هو موضّح أدناه:
<Allow> <Class ref="request.queryparam.time_variable"> <Allow class="peak_time" count="5000"/> <Allow class="off_peak_time" count="1000"/> </Class> </Allow>
في هذا المثال، يتم تحديد عدّاد الحصة الحالية من خلال قيمة مَعلمة طلب البحث time_variable التي يتم تمريرها مع كل طلب. ويمكن أن تكون قيمة هذا المتغيّر peak_time أو off_peak_time. إذا كانت مَعلمة طلب البحث تتضمّن قيمة غير صالحة، ستعرض السياسة خطأ انتهاك الحصة.
| القيمة التلقائية: | لا ينطبق |
| الظهور: | اختياري |
| النوع: | لا ينطبق |
السمات
| السمة | الوصف | تلقائي | التواجد في المنزل |
|---|---|---|---|
| ref |
تُستخدَم لتحديد متغيّر تدفّق يحتوي على فئة الحصة. |
لا ينطبق | مطلوب |
عنصر <Allow>/<Class>/<Allow>
يحدّد العنصر <Allow> الحدّ الأقصى لعداد الحصة المحدّد بواسطة العنصر <Class>. بالنسبة إلى كل علامة ثانوية مختلفة <Allow> من <Class>، تحتفظ السياسة بعدّاد مختلف.
على سبيل المثال:
<Allow> <Class ref="request.queryparam.time_variable"> <Allow class="peak_time" count="5000"/> <Allow class="off_peak_time" count="1000"/> </Class> </Allow>
في هذا المثال، تحتفظ سياسة الحصة بعدّادَي حصة باسمَين
peak_time وoff_peak_time.
| القيمة التلقائية: | لا ينطبق |
| الظهور: | اختياري |
| النوع: | لا ينطبق |
السمات
| السمة | الوصف | تلقائي | التواجد في المنزل |
|---|---|---|---|
| صنف |
تحدّد هذه السمة اسم عدّاد الحصة. |
لا ينطبق | مطلوب |
| العدد | تحدّد هذه السمة الحد الأقصى للحصة المخصّصة للعداد. | لا ينطبق | مطلوب |
العنصر <Interval>
يُستخدَم لتحديد عدد صحيح (على سبيل المثال، 1 أو 2 أو 5 أو 60 وما إلى ذلك) سيتم إقرانه بـ
TimeUnit الذي تحدّده (دقيقة أو ساعة أو يوم أو أسبوع أو شهر) لتحديد فترة زمنية
تحتسب خلالها Edge استخدام الحصة.
على سبيل المثال، يعني Interval بقيمة 24 مع TimeUnit بقيمة hour أنّه سيتم احتساب الحصة على مدار 24 ساعة.
<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
| القيمة التلقائية: | لا ينطبق |
| الظهور: | مطلوب |
| النوع: | عدد صحيح |
السمات
| السمة | الوصف | تلقائي | التواجد في المنزل |
|---|---|---|---|
| ref |
يُستخدَم لتحديد متغيّر تدفّق يحتوي على الفترة الزمنية للحصة. تكون |
لا ينطبق | اختياري |
العنصر <TimeUnit>
تُستخدَم لتحديد وحدة الوقت التي تنطبق على الحصة.
على سبيل المثال، يعني Interval بقيمة 24 مع TimeUnit بقيمة hour أنّه سيتم احتساب الحصة على مدار 24 ساعة.
<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
| القيمة التلقائية: | لا ينطبق |
| الظهور: | مطلوب |
| النوع: |
سلسلة. اختَر من بين |
السمات
| السمة | الوصف | تلقائي | التواجد في المنزل |
|---|---|---|---|
| ref | تُستخدَم لتحديد متغيّر تدفّق يحتوي على وحدة الوقت الخاصة بحصة. ref
لها الأولوية على قيمة فاصل زمني صريحة. إذا لم يتم تحديد قيمة ref في وقت التشغيل، سيتم استخدام القيمة. |
لا ينطبق | اختياري |
العنصر <StartTime>
عندما يتم ضبط type على calendar,، يتم تحديد التاريخ والوقت اللذين سيبدأ فيهما عدّاد الحصة، بغض النظر عمّا إذا تم تلقّي أي طلبات من أي تطبيقات.
على سبيل المثال:
<StartTime>2017-7-16 12:00:00</StartTime>
| القيمة التلقائية: | لا ينطبق |
| الظهور: | تكون هذه السمة مطلوبة عندما تكون قيمة type هي calendar. |
| النوع: |
سلسلة بالتنسيق ISO 8601 للتاريخ والوقت |
العنصر <Distributed>
يمكن أن يستخدم تثبيت Edge معالج رسائل واحدًا أو أكثر لمعالجة الطلبات. اضبط قيمة هذا العنصر على true لتحديد أنّ السياسة يجب أن تحتفظ بعدّاد مركزي وتتم مزامنته باستمرار على جميع معالِجات الرسائل. يمكن أن تكون معالجات الرسائل موزّعة على مناطق توفّر و/أو مناطق جغرافية.
إذا استخدمت القيمة التلقائية false، قد تتجاوز حصتك لأنّه لا تتم مشاركة عدد كل معالج رسائل:
<Distributed>true</Distributed>
لضمان مزامنة العدادات وتعديلها في كل طلب، اضبط <Distributed> و<Synchronous> على "صحيح":
<Distributed>true</Distributed> <Synchronous>true</Synchronous>
| القيمة التلقائية: | خطأ |
| الظهور: | اختياري |
| النوع: | منطقي |
العنصر <Synchronous>
اضبط القيمة على true لتعديل عدّاد الحصة الموزّعة بشكل متزامن. وهذا يعني أنّه يتم تعديل العداد في الوقت نفسه الذي يتم فيه التحقّق من الحصة المسموح بها في طلب موجّه إلى واجهة برمجة التطبيقات. اضبط القيمة على true إذا كان من الضروري عدم السماح بأي طلبات إلى واجهة برمجة التطبيقات تتجاوز الحصة.
اضبط القيمة على false لتعديل عدّاد الحصة بشكل غير متزامن. وهذا يعني أنّه من المحتمل أن يتم تنفيذ بعض طلبات البيانات من واجهة برمجة التطبيقات التي تتجاوز الحصة، وذلك حسب وقت تعديل عدّاد الحصة بشكل غير متزامن في المستودع المركزي. ومع ذلك، لن تواجه التأثيرات المحتملة في الأداء المرتبطة بالتحديثات المتزامنة.
الفاصل الزمني التلقائي للتحديث غير المتزامن هو 10 ثوانٍ. استخدِم العنصر AsynchronousConfiguration لضبط هذا السلوك غير المتزامن.
<Synchronous>false</Synchronous>
| القيمة التلقائية: | خطأ |
| الظهور: | اختياري |
| النوع: | منطقي |
العنصر <AsynchronousConfiguration>
تضبط هذه السياسة فاصل المزامنة بين عدّادات الحصة الموزّعة عندما لا يكون عنصر إعداد السياسة <Synchronous> متوفّرًا أو عندما يكون متوفّرًا وتم ضبطه على false.
يمكنك إجراء المزامنة بعد فترة زمنية أو عدد معيّن من الرسائل، وذلك باستخدام العنصرَين الثانويَين SyncIntervalInSeconds أو SyncMessageCount.
وهما يستبعدان بعضهما البعض. على سبيل المثال:
<AsynchronousConfiguration> <SyncIntervalInSeconds>20</SyncIntervalInSeconds> </AsynchronousConfiguration>
أو
<AsynchronousConfiguration> <SyncMessageCount>5</SyncMessageCount> </AsynchronousConfiguration>
| القيمة التلقائية: | SyncIntervalInSeconds = 10 seconds |
| الظهور: | اختياري، ويتم تجاهله عندما تكون قيمة <Synchronous> هي true. |
| النوع: |
مُجمّع |
عنصر <AsynchronousConfiguration>/<SyncIntervalInSeconds>
استخدِم هذه السمة لتجاوز السلوك التلقائي الذي يتم فيه إجراء التحديثات غير المتزامنة بعد فاصل زمني يبلغ 10 ثوانٍ.
<AsynchronousConfiguration> <SyncIntervalInSeconds>20</SyncIntervalInSeconds> </AsynchronousConfiguration>
يجب أن يكون فاصل المزامنة أكبر من أو يساوي 10 ثوانٍ كما هو موضّح في موضوع الحدود.
| القيمة التلقائية: | 10 |
| الظهور: | اختياري |
| النوع: |
عدد صحيح |
العنصر <AsynchronousConfiguration>/<SyncMessageCount>
تحدِّد هذه السمة عدد الطلبات على مستوى جميع معالِجات رسائل Apigee بين تعديلات الحصة.
<AsynchronousConfiguration> <SyncMessageCount>5</SyncMessageCount> </AsynchronousConfiguration>
يحدّد هذا المثال أنّه يتم تعديل عدد الحصص كل 5 طلبات في كل معالج رسائل Apigee Edge.
| القيمة التلقائية: | لا تنطبق |
| الظهور: | اختياري |
| النوع: |
عدد صحيح |
عنصر <Identifier>
استخدِم العنصر <Identifier> لضبط السياسة من أجل إنشاء عدّادات فريدة استنادًا إلى متغيّر التدفق.
في حال عدم استخدام هذا العنصر، تستخدم السياسة عدّادًا واحدًا يتم تطبيقه على الحصة.
تمت مناقشة هذا العنصر أيضًا في مشاركة "منتدى Apigee" التالية: معرّف الحصة على مستوى السياسات المختلفة.
<Identifier ref="verifyapikey.verify-api-key.client_id"/>
| القيمة التلقائية: | لا ينطبق |
| الظهور: | اختياري |
| النوع: |
سلسلة |
السمات
| السمة | الوصف | تلقائي | التواجد في المنزل |
|---|---|---|---|
| ref |
تحدّد هذه السمة متغيّرًا في التدفق يحدّد العداد المطلوب استخدامه للطلب. يمكن أن يكون المعرّف عنوان HTTP أو مَعلمة طلب بحث أو مَعلمة نموذج أو محتوى رسالة، ويكون فريدًا لكل تطبيق أو مستخدم تطبيق أو مطوّر تطبيق أو منتج API أو أي سمة أخرى. إنّ في بعض الحالات، يجب استرداد إعدادات الحصة حيث لا يتوفّر |
لا ينطبق | اختياري |
العنصر <MessageWeight>
تُستخدَم لتحديد الوزن المخصّص لكل رسالة. استخدِم وزن الرسالة لزيادة تأثير رسائل الطلبات التي تستهلك، على سبيل المثال، موارد حسابية أكثر من غيرها.
على سبيل المثال، تريد احتساب رسائل POST على أنّها "أثقل" أو أغلى مرتين من رسائل GET. لذلك، عليك ضبط MessageWeight على 2 لطلب POST و1 لطلب GET. يمكنك حتى ضبط MessageWeight على 0 كي لا يؤثّر الطلب في العداد. في هذا المثال، إذا كانت الحصة المتاحة هي 10 رسائل في الدقيقة وMessageWeight لطلبات POST هو 2، ستسمح الحصة المتاحة بإرسال 5 طلبات POST في أي فترة زمنية مدتها 10 دقائق. سيتم رفض أي طلب إضافي، سواء كان POST أو GET، قبل إعادة ضبط العداد.
يجب تحديد قيمة تمثّل MessageWeight من خلال متغيّر في التدفق، ويمكن استخراجها من عناوين HTTP أو مَعلمات طلب البحث أو حمولة طلب XML أو JSON أو أي متغيّر آخر في التدفق. على سبيل المثال، يمكنك ضبطه في عنوان باسم
weight:
<MessageWeight ref="message_weight"/>
| القيمة التلقائية: | لا ينطبق |
| الظهور: | اختياري |
| النوع: |
عدد صحيح |
متغيّرات التدفق
تتمّ تعبئة متغيرات Flow المحدّدة مسبقًا التالية تلقائيًا عند تنفيذ سياسة الحصة. لمزيد من المعلومات عن متغيرات Flow، يُرجى الاطّلاع على مرجع المتغيرات.
| المتغيّرات | النوع | الأذونات | الوصف |
|---|---|---|---|
| ratelimit.{policy_name}.allowed.count | طويل | قراءة فقط | عرض عدد الحصص المسموح بها |
| ratelimit.{policy_name}.used.count | طويل | قراءة فقط | تعرض الحصة المستخدَمة حاليًا خلال فترة الحصة |
| ratelimit.{policy_name}.available.count | طويل | قراءة فقط | تعرض هذه السمة عدد الحصص المتاحة في فترة الحصة. |
| ratelimit.{policy_name}.exceed.count | طويل | قراءة فقط | تعرض هذه الدالة القيمة 1 بعد تجاوز الحصة. |
| ratelimit.{policy_name}.total.exceed.count | طويل | قراءة فقط | تعرض هذه الدالة القيمة 1 بعد تجاوز الحصة. |
| ratelimit.{policy_name}.expiry.time | طويل | قراءة فقط |
تعرض هذه السمة الوقت بالتوقيت العالمي المنسَّق بالمللي ثانية، والذي يحدّد وقت انتهاء صلاحية الحصة وبدء فترة حصة جديدة. عندما يكون نوع سياسة الحصة هو |
| ratelimit.{policy_name}.identifier | سلسلة | قراءة فقط | تعرِض هذه السمة مرجع المعرّف (العميل) المرفق بالسياسة |
| ratelimit.{policy_name}.class | سلسلة | قراءة فقط | تعرض هذه السمة الفئة المرتبطة بمعرّف العميل. |
| ratelimit.{policy_name}.class.allowed.count | طويل | قراءة فقط | تعرض هذه الدالة عدد الحصص المسموح بها والمحدّدة في الفئة. |
| ratelimit.{policy_name}.class.used.count | طويل | قراءة فقط | تعرض هذه السمة الحصة المستخدَمة ضمن فئة |
| ratelimit.{policy_name}.class.available.count | طويل | قراءة فقط | تعرض هذه السمة عدد الحصص المتاحة في الصف. |
| ratelimit.{policy_name}.class.exceed.count | طويل | قراءة فقط | تعرض هذه السمة عدد الطلبات التي تتجاوز الحد المسموح به في الفئة ضمن الفترة الحالية للحصة المسموح بها. |
| ratelimit.{policy_name}.class.total.exceed.count | طويل | قراءة فقط | تعرض هذه السمة العدد الإجمالي للطلبات التي تتجاوز الحد المسموح به في الفئة خلال جميع فترات الحصة، وبالتالي فهي مجموع class.exceed.count لجميع فترات الحصة. |
| ratelimit.{policy_name}.failed | منطقي | قراءة فقط |
تشير إلى ما إذا تعذّر تطبيق السياسة (صحيح أو خطأ). |
مرجع الخطأ
يصف هذا القسم رموز الخطأ ورسائل الخطأ التي يتم عرضها ومتغيرات الأخطاء التي تم ضبطها من خلال Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. من المهم معرفة هذه المعلومات إذا كنت تضع قواعد خطأ التعامل مع الأخطاء. للحصول على مزيد من المعلومات، يمكنك الاطّلاع على ما تحتاج إلى معرفته حول أخطاء السياسة والتعامل مع المعالجة والأخطاء.
أخطاء بيئة التشغيل
يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.
| رمز الخطأ | رموز حالة HTTP | السبب | إصلاح |
|---|---|---|---|
policies.ratelimit.FailedToResolveQuotaIntervalReference |
500 | يحدث إذا لم يتم تحديد العنصر <Interval> ضمن سياسة الحصة. هذا العنصر
إلزاميًا ويتم استخدامه لتحديد الفاصل الزمني الساري على الحصة. الفاصل الزمني
يمكن أن تكون دقائق أو ساعات أو أيام أو أسابيع أو أشهر كما هو محدّد في العنصر <TimeUnit>. |
build |
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference |
500 | يحدث إذا لم يتم تحديد العنصر <TimeUnit> ضمن سياسة الحصة. هذا العنصر
إلزاميًا ويتم استخدامه لتحديد الوحدة الزمنية السارية على الحصة. الفاصل الزمني
يمكن أن تكون بالدقائق أو الساعات أو الأيام أو الأسابيع أو الأشهر. |
build |
policies.ratelimit.InvalidMessageWeight |
500 | يحدث إذا تم تحديد قيمة العنصر <MessageWeight> من خلال متغير التدفق
غير صالح (قيمة لا تمثل عددًا صحيحًا). |
build |
policies.ratelimit.QuotaViolation |
500 | تم تجاوز الحدّ الأقصى للحصة المخصّصة لك. | لا ينطبق |
أخطاء النشر
| اسم الخطأ | السبب | إصلاح |
|---|---|---|
InvalidQuotaInterval |
إذا كان الفاصل الزمني للحصة المحددة في العنصر <Interval> غير صحيح
عدد صحيح، فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. على سبيل المثال، إذا كان فاصل الحصة
المحددة هي 0.1 في العنصر <Interval>، فإن نشر
تعذّر الخادم الوكيل لواجهة برمجة التطبيقات.
|
build |
InvalidQuotaTimeUnit |
إذا كانت الوحدة الزمنية المحدّدة في العنصر <TimeUnit> غير متوافقة،
فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. الوحدات الزمنية المتوافقة هي minute،
hour وday وweek وmonth
|
build |
InvalidQuotaType |
إذا كان نوع الحصة المحدّدة من خلال السمة type في <Quota>
غير صالح، فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. تشير رسالة الأشكال البيانية
إنّ أنواع الحصص المسموح بها هي default وcalendar وflexi وrollingwindow.
|
build |
InvalidStartTime |
إذا كان تنسيق الوقت المحدّد في العنصر <StartTime> هو
غير صالح، فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. التنسيق الصالح هو yyyy-MM-dd HH:mm:ss.
وهو تنسيق التاريخ والوقت وفقًا لمعيار ISO 8601. بالنسبة
على سبيل المثال، إذا كان الوقت المحدّد في العنصر <StartTime> هو
7-16-2017 12:00:00 ثم تعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات.
|
build |
StartTimeNotSupported |
إذا تم تحديد العنصر <StartTime> وكان نوع حصته غير محدد
calendar، ثم تعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات. العنصر <StartTime> هو
متوافقة فقط مع نوع الحصة calendar. على سبيل المثال، إذا تم ضبط السمة type
إلى flexi أو rolling window في العنصر <Quota>، ثم
فشل نشر الخادم الوكيل لواجهة برمجة التطبيقات.
|
build |
InvalidTimeUnitForDistributedQuota |
إذا تم ضبط العنصر <Distributed> على true وضبط العنصر <TimeUnit> على
second، ثم تعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات. الوحدة الزمنية second غير صالحة لـ
حصة موزعة. |
build |
InvalidSynchronizeIntervalForAsyncConfiguration |
إذا كانت القيمة المحدّدة للعنصر <SyncIntervalInSeconds> داخل السمة
العنصر <AsynchronousConfiguration> في سياسة الحصة أقل من صفر،
فشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. |
build |
InvalidAsynchronizeConfigurationForSynchronousQuota |
في حال ضبط قيمة العنصر <AsynchronousConfiguration> على true في سياسة الحصة، والتي
يحتوي على تهيئة غير متزامنة محددة باستخدام العنصر <AsynchronousConfiguration>، ثم
فشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. |
build |
متغيّرات الأخطاء
يتم ضبط هذه المتغيّرات عندما تؤدي هذه السياسة إلى ظهور خطأ. يمكنك الاطّلاع على مقالة ما تحتاج إلى معرفته للحصول على مزيد من المعلومات. حول أخطاء السياسة.
| المتغيرات | المكان | مثال |
|---|---|---|
fault.name="fault_name" |
fault_name هو اسم الخطأ، كما هو موضَّح في جدول أخطاء وقت التشغيل أعلاه. اسم الخطأ هو الجزء الأخير من رمز الخطأ. | fault.name Matches "QuotaViolation" |
ratelimit.policy_name.failed |
policy_name هو الاسم الذي يحدّده المستخدم للسياسة التي أدّت إلى حدوث الخطأ. | ratelimit.QT-QuotaPolicy.failed = true |
مثال على استجابة الخطأ
{ "fault":{ "detail":{ "errorcode":"policies.ratelimit.QuotaViolation" }, "faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default" } }
مثال على قاعدة الخطأ
<FaultRules>
<FaultRule name="Quota Errors">
<Step>
<Name>JavaScript-1</Name>
<Condition>(fault.name Matches "QuotaViolation") </Condition>
</Step>
<Condition>ratelimit.Quota-1.failed=true</Condition>
</FaultRule>
</FaultRules>