إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
APPLIES TO: جميع المستويات API Management
يتحقق نهج validate-graphql-request من صحة طلب GraphQL ويخول access إلى مسارات استعلام معينة في واجهة برمجة تطبيقات GraphQL. استعلام غير صالح هو "خطأ في الطلب". يتم منح التخويل فقط للطلبات الصالحة.
إشعار
تعيين عناصر النهج والعناصر التابعة بالترتيب الوارد في بيان النهج. تعرف على المزيد حول كيفية تعيين نهج API Management أو تحريرها.
نهج السياسة
<validate-graphql-request error-variable-name="variable name" max-size="size in bytes" max-depth="query depth">
<authorize>
<rule path="query path, for example: '/listUsers' or '/__*'" action="string or policy expression that evaluates to 'allow | remove | reject | ignore'" />
</authorize>
</validate-graphql-request>
سمات
| السمة | الوصف | مطلوبة | افتراضي |
|---|---|---|---|
| error-variable-name | اسم المتغير في context.Variables لتسجيل أخطاء التحقق من الصحة فيه. يتم السماح بتعبيرات النهج. |
لا | غير متاح |
| الحد الأقصى للحجم | الحد الأقصى لحجم حمولة الطلب بالبايت. الحد الأقصى المسموح به للقيمة: 102,400 بايت (100 كيلوبايت). (اتصل support إذا كنت بحاجة إلى زيادة هذا الحد.) يتم السماح بتعبيرات النهج. | نعم | غير متاح |
| أقصى عمق | عدد صحيح. الحد الأقصى لعمق الاستعلام. يتم السماح بتعبيرات النهج. | لا | 6 |
عناصر
| الاسم | الوصف | مطلوبة |
|---|---|---|
| تخويل | أضف هذا العنصر لتعيين قاعدة تخويل مناسبة لمسار واحد أو أكثر. | لا |
| قاعدة | أضف عنصراً واحداً أو أكثر من هذه العناصر لتخويل مسارات استعلام معينة. يمكن لكل قاعدة تحديد إجراء مختلف اختيارياً. قد يتم تحديده بشكل مشروط باستخدام تعبير نهج. لكل حقل طرفي GraphQL، يقوم API Management بتقييم جميع قواعد المطابقة وتطبيق مطابقة المسار الأكثر تحديدا (على سبيل المثال، يتجاوز /Query/listUsers/Query/*). |
لا |
سمات القاعدة
| السمة | الوصف | مطلوبة | افتراضي |
|---|---|---|---|
| مسار | مسار الاستعلام لتنفيذ التحقق من صحة التخويل. يجب أن يتبع النمط: /type/field. |
نعم | غير متاح |
| إجراء | الإجراء المطلوب تنفيذه إذا كانت القاعدة تنطبق. قد يتم تحديده بشكل مشروط باستخدام تعبير نهج. | لا | سماح |
نظام الاستبطان
نهج المسار=/__* عبارة عن نظام الاستبطان. يمكنك استخدامه لرفض طلبات الاستبطان (__schema، __type، وغيرها.).
طلب الإجراءات
يتم وصف الإجراءات المتوفرة في الجدول التالي.
| الإجراء | الوصف |
|---|---|
| رفض | يحدث خطأ في الطلب، ولا يتم إرسال الطلب إلى الخلفية. لا يتم تطبيق قواعد إضافية إذا تم تكوينها. |
| حذف | يحدث خطأ في الحقل، ويتم إزالة الحقل من الطلب. |
| سماح | يتم تمرير الحقل إلى الخلفية. |
| تجاهل | القاعدة غير صالحة لهذه الحالة ويتم تطبيق القاعدة التالية. |
الاستخدام
- أقسام النهج:الواردة.
- نطاقات النهج: العمومية، ومساحة العمل، والمنتج، وواجهة برمجة التطبيقات
- البوابات: الكلاسيكية، الإصدار 2، الاستهلاك، المستضافة ذاتيا، مساحة العمل
ملاحظات الاستخدام
تكوين نهج pass-through أو التمثيل GraphQL API التي تم استيرادها إلى API Management.
يمكن استخدام هذا النهج مرة واحدة فقط في قسم النهج.
نظرا لأن استعلامات GraphQL تستخدم مخططا مسطحا، فقد يتم تطبيق الأذونات على أي عقدة طرفية من نوع الإخراج:
- طفرة أو استعلام أو اشتراك
- حقل فردي في تعريف نوع
قد لا يتم تطبيق الأذونات على:
- نوع الإدخال
- الأجزاء
- النقابات
- الواجهات
- عنصر المخطط
يمكن للنهج التحقق من صحة طلبات GraphQL مع ما يصل إلى 250 حقل استعلام عبر جميع المستويات.
معالجة الخطأ
يُعد الفشل في التحقق من صحة مخطط GraphQL أو فشل حجم الطلب أو مدى عمقه خطأً في الطلب وفشل النتائج في الطلب مع كتلة أخطاء (ولكن ليست كتلة بيانات).
على غرار خاصية Context.LastError، يتم نشر كافة أخطاء التحقق من صحة GraphQL تلقائياً في المتغير GraphQLErrors. إذا كان يتعين نشر الأخطاء بشكل منفصل، فيمكنك تحديد اسم متغير خطأ. يتم دفع الأخطاء إلى المتغير error والمتغير GraphQLErrors.
الأمثلة
التحقق من صحة الاستعلام
يطبق هذا المثال قواعد التحقق من الصحة والتخويل التالية لاستعلام GraphQL:
- يتم رفض الطلبات التي يزيد حجمها عن 100 كيلوبايت أو التي يزيد عمق الاستعلام عنها عن 4.
- يتم رفض الطلبات إلى نظام الاستبطان.
- تتم إزالة الحقل
/Missions/nameمن الطلبات التي تحتوي على أكثر من عنوانين.
<validate-graphql-request error-variable-name="name" max-size="102400" max-depth="4">
<authorize>
<rule path="/__*" action="reject" />
<rule path="/Missions/name" action="@(context.Request.Headers.Count > 2 ? "remove" : "allow")" />
</authorize>
</validate-graphql-request>
التحقق من صحة الطفرة
يطبق هذا المثال قواعد التحقق من الصحة والتخويل التالية على تبديل GraphQL:
- يتم رفض الطلبات التي يزيد حجمها عن 100 كيلوبايت أو التي يزيد عمق الاستعلام عنها عن 4.
- يتم رفض طلبات تغيير الحقل
deleteUserإلا عندما يكون الطلب من عنوان IP198.51.100.1.
<validate-graphql-request error-variable-name="name" max-size="102400" max-depth="4">
<authorize>
<rule path="/Mutation/deleteUser" action="@(context.Request.IpAddress <> "198.51.100.1" ? "deny" : "allow")" />
</authorize>
</validate-graphql-request>
النهج ذات الصلة
المحتوى ذو الصلة
لمزيد من المعلومات حول العمل مع النُهج، راجع:
- البرنامج التعليمي: تحويل واجهة برمجة التطبيقات الخاصة بك وحمايتها
- Policy reference لقائمة كاملة من بيانات النُهج وإعداداتها
- تعبيرات النهج
- تعيين النهج أو تحريرها
- إعادة استخدام التكوينات الخاصة بالنهج
- مستودع القصاصات البرمجية Policy
- عينات السياسة repo
- إدارة Azure API مجموعة أدوات النهج
- احصل على مساعدة Copilot لإنشاء النهج وشرحها واستكشاف الأخطاء وإصلاحها