أنت تطّلع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
لمحة عن سياسة OASValidation
تتيح لك سياسة OASValidation (التحقّق من مواصفات OpenAPI) التحقّق من صحة رسالة طلب أو استجابة واردة مقارنةً بمواصفات OpenAPI 3.0 (بتنسيق JSON أو YAML). يُرجى الاطّلاع على ما هو المحتوى الذي يتم التحقّق منه؟
تحدّد سياسة OASValidation اسم مواصفات OpenAPI التي سيتم استخدامها للتحقّق من الصحة عند تنفيذ الخطوة التي تم إرفاق السياسة بها.
يتم تخزين مواصفات OpenAPI كمورد في الموقع العادي التالي ضمن حزمة وكيل واجهة برمجة التطبيقات: apiproxy/resources/oas.
يجب أن تتضمّن مواصفات OpenAPI الامتداد .json أو .yml أو .yaml.
أضِف مواصفات OpenAPI كمورد إلى حزمة وكيل واجهة برمجة التطبيقات باستخدام واجهة المستخدم أو واجهة برمجة التطبيقات، كما هو موضّح في إدارة الموارد.
ما هو المحتوى الذي يتم التحقّق منه؟
يلخّص الجدول التالي محتوى رسالة الطلب الذي يتم التحقّق منه من خلال سياسة OASValidation، حسب المكوّن.
| المكونات | طلب التحقق |
|---|---|
| Basepath | يتحقّق من صحة المسار الأساسي الذي يحدّده وكيل واجهة برمجة التطبيقات، ويتجاهل المسار الأساسي المحدّد في مواصفات OpenAPI. |
| المسار | يتحقّق من أنّ مسار الطلب (باستثناء المسار الأساسي) يتطابق مع أحد أنماط المسارات المحدّدة في مواصفات OpenAPI. |
| فِعل | يتحقّق من أنّ الفعل محدّد للمسار في مواصفات OpenAPI. |
| نص رسالة الطلب |
ملاحظة: تتحقّق السياسة من صحة نص رسالة الطلب وفقًا لمواصفات OpenAPI فقط إذا تم ضبط Content-Type على
|
| المعلمات |
|
يلخّص الجدول التالي محتوى رسالة الاستجابة الذي يتم التحقّق منه من خلال سياسة OASValidation، حسب المكوّن.
| المكونات | التحقّق من صحة الردود |
|---|---|
| المسار | يتحقّق من أنّ مسار الطلب (باستثناء المسار الأساسي) يتطابق مع أحد أنماط المسارات المحدّدة في مواصفات OpenAPI. |
| فِعل | يتحقّق من أنّ الفعل محدّد للمسار في مواصفات OpenAPI. |
| نص رسالة الرد |
|
نماذج
توضّح الأمثلة التالية بعض الطرق التي يمكنك من خلالها استخدام سياسة OASValidation للتحقّق من صحة الرسائل وفقًا لمواصفات OpenAPI 3.0.
التحقّق من صحة رسالة الطلب
في المثال التالي، تتحقّق سياسة myoaspolicy من صحة نص رسالة الطلب مقارنةً بمخطط نص رسالة طلب العملية المحدّد في مواصفات OpenAPI my-spec.json.
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.json</OASResource>
<Options>
<ValidateMessageBody>true</ValidateMessageBody>
</Options>
<Source>request</Source>
</OASValidation>
إذا لم يتوافق نص الرسالة مع مواصفات OpenAPI، سيظهر الخطأ policies.oasvalidation.Failed.
التحقّق من صحة المَعلمات
يضبط المثال التالي السياسة على التعذُّر في حال تحديد مَعلمة عنوان أو طلب بحث أو ملف تعريف ارتباط في الطلب غير محدّدة في مواصفات OpenAPI.
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.yaml</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Header>false</Header>
<Query>false</Query>
<Cookie>false</Cookie>
</AllowUnspecifiedParameters>
</Options>
</OASValidation>عنصر <OASValidation>
تحدّد هذه السياسة سياسة التحقّق من مواصفات OpenAPI.
| القيمة التلقائية | يُرجى الاطّلاع على علامة التبويب السياسة التلقائية أدناه |
| هل هو مطلوب؟ | مطلوب |
| النوع | عنصر معقّد |
| العنصر الرئيسي | timing fixed in amara |
| العناصر الفرعية |
<DisplayName><OASResource><Source><Options><Source> |
البنية
يستخدم العنصر <OASValidation> البنية التالية:
<OASValidation
continueOnError="[true|false]"
enabled="[true|false]"
name="policy_name"
>
<!-- All OASValidation child elements are optional except OASResource -->
<DisplayName>policy_display_name</DisplayName>
<OASResource>validation_JSON_or_YAML</OASResource>
<Options>
<ValidateMessageBody>[true|false]</ValidateMessageBody>
<AllowUnspecifiedParameters>
<Header>[true|false]</Header>
<Query>[true|false]</Query>
<Cookie>[true|false]</Cookie>
</AllowUnspecifiedParameters>
</Options>
<Source>message_to_validate</Source>
</OASValidation>السياسة التلقائية
يوضّح المثال التالي الإعدادات التلقائية عند إضافة سياسة "التحقّق من OAS" إلى المسار في واجهة مستخدم Apigee:
<OASValidation continueOnError="false" enabled="true" name="OpenAPI-Spec-Validation-1">
<DisplayName>OpenAPI Spec Validation-1</DisplayName>
<Properties/>
<Source>request</Source>
<OASResource>oas://OpenAPI-Spec-Validation-1.yaml</OASResource>
</OASValidation>يتضمن هذا العنصر السمات التالية الشائعة لجميع السياسات:
| السمة | تلقائي | مطلوب | الوصف |
|---|---|---|---|
name |
لا ينطبق | مطلوب |
الاسم الداخلي للسياسة. يمكن أن تحتوي قيمة السمة اختياريًا، يمكنك استخدام العنصر |
continueOnError |
false | إجراء اختياري | يمكنك ضبطها على "خطأ" لعرض رسالة خطأ عند تعذّر تنفيذ إحدى السياسات. ويُعدّ هذا سلوكًا متوقعًا في معظم السياسات. يمكنك ضبط القيمة على "صحيح" للاستمرار في تنفيذ العملية حتى بعد تعذُّر تنفيذ سياسة. |
enabled |
صحيح | إجراء اختياري | اضبط القيمة على "true" لفرض السياسة. اضبط هذه القيمة على "false" على "إيقاف" السياسة. لن يتم فرض السياسة حتى إذا ظلت مرتبطة بتدفق. |
async |
false | منهي العمل به | تم إيقاف هذه السمة نهائيًا. |
مرجع العنصر الفرعي
يوضّح هذا القسم العناصر الفرعية لـ <OASValidation>.
<DisplayName>
يُرجى استخدامها بالإضافة إلى السمة name لتصنيف السياسة في
محرّر الخادم الوكيل لواجهة المستخدم الخاصة بالإدارة باسم مختلف يبدو أكثر طبيعية.
العنصر <DisplayName> شائع في جميع السياسات.
| القيمة التلقائية | timing fixed in amara |
| هل هو مطلوب؟ | اختيارية: في حال حذف <DisplayName>، يتم استخدام قيمة السمة name للسياسة |
| النوع | سلسلة |
| العنصر الرئيسي | <PolicyElement> |
| العناصر الفرعية | بدون |
يستخدم العنصر <DisplayName> البنية التالية:
البنية
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
مثال
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
لا يحتوي العنصر <DisplayName> على أي سمات أو عناصر فرعية.
<OASResource>
تحدّد مواصفات OpenAPI التي يتم التحقّق منها. يمكنك تخزين هذا الملف:
- على مستوى الخادم الوكيل لواجهة برمجة التطبيقات ضمن
/apiproxy/resources/oasفي حزمة الخادم الوكيل لواجهة برمجة التطبيقات - في قسم
Resourcesمن طريقة عرض "المتصفّح" في محرِّر الخادم الوكيل لواجهة برمجة التطبيقات.
لمزيد من المعلومات، يُرجى الاطّلاع على إدارة الموارد.
يمكنك تحديد مواصفات OpenAPI باستخدام نموذج رسالة، مثل {oas.resource.url}.
في هذه الحالة، سيتم تقييم قيمة متغيّر التدفق oas.resource.url (بين قوسين معقوفين)
واستبدالها بسلسلة الحمولة في وقت التشغيل.
لمزيد من المعلومات، يُرجى الاطّلاع على نماذج الرسائل.
| القيمة التلقائية | بدون |
| هل هو مطلوب؟ | مطلوب |
| النوع | سلسلة |
| العنصر الرئيسي |
<OASValidation>
|
| العناصر الفرعية | بدون |
البنية
يستخدم العنصر <OASResource> البنية التالية:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> ... </OASValidation>
مثال
يشير المثال التالي إلى مواصفات my-spec.yaml المخزَّنة ضمن /apiproxy/resources/oas في حزمة الخادم الوكيل لواجهة برمجة التطبيقات:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> </OASValidation>
لا يحتوي العنصر <OASResource> على أي سمات أو عناصر فرعية.
<Options>
لضبط خيارات السياسة.
| القيمة التلقائية | timing fixed in amara |
| هل هو مطلوب؟ | اختياري |
| النوع | نوع معقّد |
| العنصر الرئيسي |
<OASValidation>
|
| العناصر الفرعية |
<ValidateMessageBody><AllowUnspecifiedParameters> |
البنية
يستخدم العنصر <Options> البنية التالية:
<OASValidation name="policy_name">
<OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
<Options>
<ValidateMessageBody>[true|false]</ValidateMessageBody>
<AllowUnspecifiedParameters>
<Header>[true|false]</Header>
<Query>[true|false]</Query>
<Cookie>[true|false]</Cookie>
</AllowUnspecifiedParameters>
</Options>
...
</OASValidation>مثال
يضبط المثال التالي خيارات السياسة. يتم شرح كل خيار بمزيد من التفصيل أدناه.
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.yaml</OASResource>
<Options>
<ValidateMessageBody>false</ValidateMessageBody>
<AllowUnspecifiedParameters>
<Header>false</Header>
<Query>false</Query>
<Cookie>false</Cookie>
</AllowUnspecifiedParameters>
</Options>
</OASValidation><ValidateMessageBody>
يحدّد هذا الإعداد ما إذا كان يجب أن تتحقّق السياسة من صحة نص الرسالة مقارنةً بمخطّط نص الطلب الخاص بالعملية في مواصفات OpenAPI. يجب ضبطها على true للتحقّق من صحة محتوى نص الرسالة. اضبطها على false للتحقّق من توفّر نص الرسالة فقط.
يمكنك التحكّم في ما إذا كان تنفيذ التدفق سيستمر بعد حدوث خطأ في التحقّق من الصحة من خلال ضبط سمة continueOnError لعنصر <OASValidation> على true.
| القيمة التلقائية | خطأ |
| هل هو مطلوب؟ | اختياري |
| النوع | منطقي |
| العنصر الرئيسي |
<Options>
|
| العناصر الفرعية | بدون |
البنية
يستخدم العنصر <ValidateMessageBody> البنية التالية:
<OASValidation name="policy_name">
<OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
<Options>
<ValidateMessageBody>[true|false]</ValidateMessageBody>
</Options>
...
</OASValidation>مثال
يتيح المثال التالي التحقّق من صحة محتوى نص الرسالة:
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.yaml</OASResource>
<Options>
<ValidateMessageBody>true</ValidateMessageBody>
</Options>
</OASValidation><AllowUnspecifiedParameters>
تضبط هذه السياسة سلوك السياسة في حال توفّر مَعلمات في العنوان أو طلب البحث أو ملف تعريف الارتباط في الطلب غير محدّدة في مواصفات OpenAPI.
| القيمة التلقائية | timing fixed in amara |
| هل هو مطلوب؟ | اختياري |
| النوع | نوع معقّد |
| العنصر الرئيسي |
<Options>
|
| العناصر الفرعية |
<Header><Query><Cookie> |
البنية
يستخدم العنصر <AllowUnspecifiedParameters> البنية التالية:
<OASValidation name="policy_name">
<OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Header>[true|false]</Header>
<Query>[true|false]</Query>
<Cookie>[true|false]</Cookie>
</AllowUnspecifiedParameters>
</Options>
...
</OASValidation>مثال
يضبط المثال التالي السياسة على التعذّر في حال تحديد مَعلمة عنوان أو طلب بحث أو ملف تعريف ارتباط في الطلب غير محدّدة في مواصفات OpenAPI.
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.yaml</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Header>false</Header>
<Query>false</Query>
<Cookie>false</Cookie>
</AllowUnspecifiedParameters>
</Options>
</OASValidation><Header> (تابع لـ <AllowUnspecifiedParameters>)
تضبط هذه السياسة سلوك السياسة في حال توفّر مَعلمات عناوين في الطلب غير محدّدة في مواصفات OpenAPI.
للسماح بتحديد مَعلمات العناوين في الطلب غير المحدّدة في مواصفات OpenAPI، اضبط هذه المَعلمة على صحيح. وإلا، اضبط هذه المَعلمة على false لكي يتعذّر تنفيذ السياسة.
| القيمة التلقائية | صحيح |
| هل هو مطلوب؟ | منطقي |
| النوع | نوع معقّد |
| العنصر الرئيسي |
<AllowUnspecifiedParameters>
|
| العناصر الفرعية | بدون |
البنية
يستخدم العنصر <Header> البنية التالية:
<OASValidation name="policy_name">
<OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Header>[true|false]</Header>
</AllowUnspecifiedParameters>
</Options>
...
</OASValidation>مثال
يضبط المثال التالي السياسة على الفشل إذا تم تحديد مَعلمة عنوان في الطلب غير محدّدة في مواصفات OpenAPI.
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.yaml</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Header>false</Header>
</AllowUnspecifiedParameters>
</Options>
</OASValidation><Query> (تابع لـ <AllowUnspecifiedParameters>)
تضبط هذه السمة سلوك السياسة في حال توفّر مَعلمات طلب بحث في الطلب غير محدّدة في مواصفات OpenAPI.
للسماح بتحديد معلمات طلب البحث في الطلب غير المحدّدة في مواصفات OpenAPI، اضبط هذه المعلمة على true. وإلا، اضبط هذه المَعلمة على false لكي يتعذّر تنفيذ السياسة.
| القيمة التلقائية | صحيح |
| هل هو مطلوب؟ | منطقي |
| النوع | نوع معقّد |
| العنصر الرئيسي |
<AllowUnspecifiedParameters>
|
| العناصر الفرعية | بدون |
البنية
يستخدم العنصر <Query> البنية التالية:
<OASValidation name="policy_name">
<OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Query>[true|false]</Query>
</AllowUnspecifiedParameters>
</Options>
...
</OASValidation>مثال
يضبط المثال التالي السياسة على تعذُّر التنفيذ في حال تحديد مَعلمة طلب بحث في الطلب غير محدّدة في مواصفات OpenAPI.
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.yaml</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Query>false</Query>
</AllowUnspecifiedParameters>
</Options>
</OASValidation>يتم ضبط سلوك السياسة في حال توفّر مَعلمات ملفات تعريف الارتباط في الطلب غير المحدّدة في مواصفات OpenAPI.
للسماح بتحديد مَعلمات ملفات تعريف الارتباط في الطلب غير المحدّدة في مواصفات OpenAPI، اضبط هذه المَعلمة على true. وإلا، اضبط هذه المَعلمة على false لكي يتعذّر تنفيذ السياسة.
| القيمة التلقائية | صحيح |
| هل هو مطلوب؟ | منطقي |
| النوع | نوع معقّد |
| العنصر الرئيسي |
<AllowUnspecifiedParameters>
|
| العناصر الفرعية | بدون |
البنية
يستخدم العنصر <Cookie> البنية التالية:
<OASValidation name="policy_name">
<OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Query>[true|false]</Query>
</AllowUnspecifiedParameters>
</Options>
...
</OASValidation>مثال
يضبط المثال التالي السياسة على تعذُّر التنفيذ إذا تم تحديد مَعلمة طلب بحث في الطلب غير محدّدة في مواصفات OpenAPI.
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.yaml</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Cookie>false</Cookie>
</AllowUnspecifiedParameters>
</Options>
</OASValidation><Source>
رسالة JSON التي سيتم تقييمها مقابل هجمات حمولة JSON. يتم ضبط هذا الإعداد عادةً على request، لأنّك ستحتاج عادةً إلى تقييم الطلبات الواردة من تطبيقات العملاء.
اضبطه على response لتقييم رسائل الاستجابة.
اضبط السياسة على message لتقييم رسالة الطلب تلقائيًا عندما تكون السياسة مرتبطة بمسار الطلب، ولتقييم رسالة الاستجابة عندما تكون السياسة مرتبطة بمسار الاستجابة.
| القيمة التلقائية | طلب |
| هل هو مطلوب؟ | اختياري |
| النوع | سلسلة |
| العنصر الرئيسي |
<Source>
|
| العناصر الفرعية | بدون |
البنية
يستخدم العنصر <Source> البنية التالية:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Source>[message|request|response]</Source> ... </OASValidation>
مثال
يقيّم المثال التالي تلقائيًا رسالة الطلب عندما تكون السياسة مرتبطة بمسار الطلب ورسالة الاستجابة عندما تكون السياسة مرتبطة بمسار الاستجابة:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Source>message</Source> </OASValidation>
لا يحتوي العنصر <Source> على أي سمات أو عناصر فرعية.
المخططات
يتم تحديد كل نوع سياسة من خلال مخطّط XML (.xsd). ولمزيد من المعلومات، تتوفّر مخطّطات السياسات على GitHub.
رموز الخطأ
يصف هذا القسم رموز الأخطاء ورسائل الخطأ التي يتم عرضها ومتغيرات الأخطاء التي تضبطها Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. هذه المعلومات مهمة لمعرفة ما إذا كنت تعمل على تطوير قواعد للأخطاء للتعامل معها. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات وأخطاء المعالجة.
أخطاء في وقت التشغيل
يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.
| رمز الخطأ | رموز حالة HTTP | السبب | |
|---|---|---|---|
steps.oasvalidation.Failed |
500 | لا يمكن التحقّق من صحة نص رسالة الطلب بالاستناد إلى مواصفات OpenAPI التي تم توفيرها. | |
steps.oasvalidation.SourceMessageNotAvailable |
500 |
المتغيّر المحدَّد في العنصر |
|
steps.oasvalidation.NotMessageVariable |
500 |
تم ضبط العنصر |
build |
أخطاء النشر
يمكن أن تحدث هذه الأخطاء عند نشر خادم وكيل يحتوي على هذه السياسة.
| اسم الخطأ | السبب | |
|---|---|---|
ResourceDoesNotExist |
مواصفات OpenAPI المُشار إليها في العنصر <OASResource> غير موجودة.
|
|
ResourceCompileFailed |
تحتوي مواصفات OpenAPI المضمّنة في عملية النشر على أخطاء تحول دون تجميعها. ويشير ذلك بشكل عام إلى أنّ المواصفات لم تتوافق مع الإصدار 3.0 من مواصفات OpenAPI. | |
BadResourceURL |
لا يمكن معالجة مواصفات OpenAPI المُشار إليها في العنصر <OASResource>. يمكن أن يحدث ذلك إذا لم يكن الملف بتنسيق JSON أو YAML أو
لم يتم تحديد عنوان URL للملف بشكل صحيح.
|
متغيرات الخطأ
ويتم ضبط هذه المتغيّرات عندما تؤدي هذه السياسة إلى ظهور خطأ في وقت التشغيل. لمزيد من المعلومات، اطّلِع على المعلومات التي تحتاج إلى معرفتها عن الأخطاء المتعلقة بالسياسات.
| المتغيرات | المكان | مثال |
|---|---|---|
fault.name="fault_name" |
fault_name هو اسم الخطأ، كما هو موضَّح في جدول أخطاء وقت التشغيل أعلاه. اسم الخطأ هو الجزء الأخير من رمز الخطأ. | fault.name Matches "ResourceDoesNotExist" |
oasvalidation.policy_name.failed |
policy_name هو اسم السياسة التي حدّدها المستخدم التي أدت إلى حدوث الخطأ. | oasvalidation.myoaspolicy.failed = true |
ميزات مواصفات OpenAPI المتوافقة
تتيح سياسة OASValidation ميزات مواصفات OpenAPI التي تم تلخيصها في الجدول التالي، حسب الفئة. يتم أيضًا إدراج الميزات غير المتوافقة.
| الفئة | متاح | غير متاح |
|---|---|---|
| تنسيقات أنواع البيانات | boolean date date-time double float int32/int64 ipv4/ipv6 md5 sha1/sha256/sha512 string uri uri-template uuid |
binary byte password |
| Discriminator object | mapping propertyName |
لا ينطبق |
| عنصر نوع الوسائط | مخطط | encoding example examples |
| كائن العمليات | parameters requestBody responses security (دعم جزئي) |
callbacks deprecated servers |
| كائن المَعلمات | allowEmptyValue in ( query, header, path)required responses schema style ( deepObject, form, formmatrix, label, pipeDelimited, simple, spaceDelimited)ملاحظة: لا يتيح deepObject استخدام سوى مَعلمات السلسلة، ولا يتيح استخدام المصفوفات والعناصر المُدمَجة.
|
allowReserved deprecated example examples content |
| كائن المسارات | delete get head options parameters patch post put trace variables |
خوادم |
| عنصر نص الطلب | application/json application/hal+json application/x-www-form-urlencoded ( encoding object not supported)content مطلوب |
application/xml multipart/form-data text/plain text/xml |
| Response object | application/json application/hal+json application/x-www-form-urlencoded ( encoding object not supported)content headers |
application/xml links text/plain text/xml |
| عنصر الردود | default رمز حالة HTTP |
لا ينطبق |
| عنصر المخطط | $ref additionalProperties (boolean flag variant only) allOf (ignored if additionalProperties is false)anyOf enum exclusiveMaximum/exclusiveMinimum format items maximum/minimum maxItems/minItems maxLength/minLength maxProperties/minProperties multipleOf not nullable oneOf pattern properties required title type uniqueItems |
deprecated example readOnly writeOnly xml |
| عنصر مخطّط الأمان | in (header, query) (يتم تجاهلها إذا كانت قيمة type هي http)name type ( apiKey, http)
|
bearerFormat flows openIdConnectUrl scheme |
| عنصر الخادم | url variables |
تعريفات متعددة للخوادم |