أنت تطّلع على مستندات 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، حسب المكوّن.
المكونات | طلب التحقق |
---|---|
المسار الأساسي | للتحقّق من صحة المسار الأساسي الذي حدّده وكيل واجهة برمجة التطبيقات، يتم تجاهل المسار الأساسي المحدّد في مواصفات OpenAPI. |
المسار | للتحقّق من أنّ مسار الطلب (باستثناء المسار الأساسي) يتطابق مع أحد أنماط المسارات المحدّدة في مواصفات OpenAPI |
فِعل | للتحقّق من أنّه تمّ تعريف الفعل للمسار في مواصفات OpenAPI |
نص طلب المحادثة |
ملاحظة: لا تتحقّق السياسة من صحة نص رسالة الطلب وفقًا لمواصفات OpenAPI إلا إذا تم ضبط Content-Type على
|
المعلمات |
|
يلخِّص الجدول التالي محتوى رسالة الاستجابة الذي يتم التحقّق منه من خلال سياسة OASValidation، حسب المكوّن.
المكونات | التحقّق من صحة الردّ |
---|---|
المسار | للتحقّق من أنّ مسار الطلب (باستثناء المسار الأساسي) يتطابق مع أحد أنماط المسارات المحدّدة في مواصفات 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>
السياسة التلقائية
يعرض المثال التالي الإعدادات التلقائية عند إضافة سياسة التحقّق من 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
بالإضافة إلى سمة 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، اضبط هذه المَعلمة على 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 Specification التي تم تلخيصها في الجدول التالي حسب الفئة. ويتم أيضًا إدراج الميزات غير المتاحة.
الفئة | معلومات معتمَدة | غير متاح |
---|---|---|
تنسيقات أنواع البيانات | boolean date date-time double float int32/int64 ipv4/ipv6 md5 sha1/sha256/sha512 string uri uri-template uuid |
ثنائي بايت كلمة المرور |
عنصر المُميِّز | mapping propertyName |
لا ينطبق |
عنصر نوع الوسائط | مخطّط | ترميز مثال أمثلة |
عنصر العمليات | parameters requestBody responses security (partial support) |
عمليات تسجيل المكالمات القديمة الخوادم |
عنصر "المَعلمات" | 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 required |
application/xml multipart/form-data text/plain text/xml |
عنصر الاستجابة | application/json application/hal+json application/x-www-form-urlencoded ( encoding object not supported)content headers |
application/xml links text/plain text/xml |
عنصر Responses | التلقائية رمز حالة HTTP |
لا ينطبق |
عنصر المخطط | $ref additionalProperties (صيغة العلامة المنطقية فقط) allOf (يتم تجاهلها إذا كان additionalProperties هو 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 )اسم نوع ( apiKey ، http )
|
bearerFormat flows openIdConnectUrl scheme |
عنصر الخادم | متغيّرات عنوان URL |
تعريفات الخوادم المتعددة |