أنت الآن بصدد الاطّلاع على مستندات 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 | تتحقّق من صحة basepath الذي يحدّده خادم وكيل واجهة برمجة التطبيقات، وتتجاهل basepath المحدّد في مواصفات OpenAPI. |
المسار | تتحقّق هذه السمة من أنّ مسار الطلب (باستثناء basepath) يتطابق مع أحد أنماط المسار المحدّدة في مواصفات OpenAPI. |
فِعل | تتحقّق هذه السمة من أنّ الفعل محدّد للمسار في مواصفات OpenAPI. |
نص رسالة الطلب |
ملاحظة: لا تتحقّق السياسة من صحة نص رسالة الطلب وفقًا لمواصفات OpenAPI إلا إذا تم ضبط Content-Type على
|
المعلمات |
|
يلخّص الجدول التالي محتوى رسالة الردّ الذي يتم التحقّق من صحته باستخدام سياسة OASValidation، حسب المكوّن.
المكونات | التحقّق من صحة الرد |
---|---|
المسار | تتحقّق هذه السمة من أنّ مسار الطلب (باستثناء basepath) يتطابق مع أحد أنماط المسار المحدّدة في مواصفات OpenAPI. |
فِعل | تتحقّق هذه السمة من أنّ الفعل محدّد للمسار في مواصفات OpenAPI. |
نص رسالة الرد |
|
نماذج
توضّح الأمثلة التالية بعض الطرق التي يمكنك من خلالها استخدام سياسة OASValidation للتحقّق من صحة الرسائل استنادًا إلى مواصفات OpenAPI 3.0.
في المثال التالي، تتحقّق السياسة myoaspolicy
من صحة نص رسالة الطلب مقارنةً بمخطط نص رسالة الطلب الخاص بالعملية والمحدّد في مواصفات my-spec.json
OpenAPI.
<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>
يعرض المثال التالي الإعدادات التلقائية عند إضافة سياسة التحقّق من صحة مواصفات OpenAPI إلى التدفق في واجهة مستخدم 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>
على أي سمات أو عناصر فرعية.
<خيارات>
تضبط هذه السمة خيارات السياسة.
القيمة التلقائية | 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، اضبط هذه المَعلمة على true. بخلاف ذلك، اضبط هذه المَعلمة على 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 |
عنصر المُميِّز | mapping propertyName |
لا ينطبق |
عنصر نوع الوسائط | المخطط | encoding example examples |
عنصر العمليات | المَعلمات requestBody الردود الأمان (دعم جزئي) |
عمليات رد الاتصال تم إيقافها نهائيًا الخوادم |
عنصر المَعلمات | allowEmptyValue in ( query , header , path )required responses schema style ( deepObject , form , formmatrix , label , pipeDelimited , simple , spaceDelimited )ملاحظة: لا يتيح deepObject سوى مَعلمات السلسلة، ولا يتيح المصفوفات والكائنات المتداخلة.
|
allowReserved deprecated example examples content |
عنصر Paths | delete get head options parameters patch post put trace variables |
الخوادم |
عنصر نص الطلب | application/json application/hal+json application/x-www-form-urlencoded (لا يتوفّر الكائن encoding )المحتوى مطلوب |
application/xml multipart/form-data text/plain text/xml |
كائن الاستجابة | application/json application/hal+json application/x-www-form-urlencoded (لا يتوافق مع العنصر encoding )المحتوى العناوين |
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 |
عنصر مخطط الأمان | في (header ، query ) (يتم تجاهله إذا كانت قيمة type هي http )name type ( apiKey ، http )
|
bearerFormat flows openIdConnectUrl scheme |
عنصر الخادم | url variables |
تعريفات خوادم متعددة |