מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
מידע על המדיניות בנושא OAS Validation
מדיניות OASValidation (אימות מפרט OpenAPI) מאפשרת לכם לאמת בקשה נכנסת או הודעת תגובה מול מפרט OpenAPI 3.0 (JSON או YAML). בקטע איזה תוכן מאומת?
מדיניות OASValidation מציינת את השם של מפרט OpenAPI שישמש לאימות כשיופעל השלב שאליו המדיניות מצורפת.
מפרט OpenAPI מאוחסן כמשאב במיקום הסטנדרטי הבא בתוך חבילת ה-proxy ל-API: apiproxy/resources/oas
.
מפרט OpenAPI חייב לכלול תוסף מסוג .json
, .yml
, .yaml
.
מוסיפים מפרט OpenAPI כמשאב לחבילת proxy ל-API באמצעות ממשק המשתמש או ה-API, כפי שמתואר במאמר ניהול משאבים.
איזה תוכן מאומת?
בטבלה הבאה מופיע סיכום של התוכן של הודעות הבקשה שאומת במדיניות OASValidation, לפי רכיב.
רכיבים | בקש אימות |
---|---|
נתיב בסיס | מאמת את הנתיב הבסיסי שהוגדר על ידי שרת ה-proxy ל-API; מתעלם מהנתיב הבסיסי שצוין במפרט OpenAPI. |
נתיב | מאמת שנתיב הבקשה (להחסר את הנתיב הבסיסי) תואם לאחת מתבניות הנתיב המוגדרות במפרט OpenAPI. |
פועל | מאמת את הגדרת פועל לנתיב במפרט OpenAPI. |
גוף ההודעה |
הערה: המדיניות מאמתת את גוף הודעת הבקשה בהתאם למפרט OpenAPI רק אם סוג התוכן מוגדר לערך
|
פרמטרים |
|
בטבלה הבאה מופיע סיכום של תוכן ההודעות בתשובה שאומת במדיניות OASValidation, לפי רכיב.
רכיבים | אימות התשובה |
---|---|
נתיב | מאמת שנתיב הבקשה (להחסר את הנתיב הבסיסי) תואם לאחת מתבניות הנתיב המוגדרות במפרט OpenAPI. |
פועל | מאמת את הגדרת פועל לנתיב במפרט OpenAPI. |
גוף הודעת התשובה |
|
דוגמאות
בדוגמאות הבאות מוצגות כמה מהדרכים שבהן אפשר להשתמש ב-OAS Validation המדיניות לאימות הודעות מול מפרט 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
.
אימות פרמטרים
בדוגמה הבאה המדיניות תיכשל אם יצוינו פרמטרים של כותרת, שאילתה או קובץ Cookie בבקשה שאינם המוגדר במפרט 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.
ערך ברירת מחדל | מידע נוסף מופיע בכרטיסייה מדיניות ברירת המחדל למטה |
חובה? | חובה |
סוג | אובייקט מורכב |
רכיב הורה | לא רלוונטי |
רכיבים צאצאים |
<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 | אופציונלי | צריך להגדיר את הערך 'False' כדי להחזיר שגיאה כשהמדיניות נכשלת. זו התנהגות צפויה ברוב סוגי המדיניות. הערך של הפרמטר הוא TRUE כדי שביצוע הפעולות יתבצע גם אחרי שמדיניות תיכשל. |
enabled |
true | אופציונלי | כדי לאכוף את המדיניות צריך להגדיר את הערך True. מגדירים את המדיניות כ-"false" כדי "להשבית" את המדיניות. המדיניות הזו לא תיאכף גם אם היא תצורף לתהליך. |
async |
false | הוצא משימוש | המאפיין הזה הוצא משימוש. |
הפניה לרכיב צאצא
בקטע הזה מתוארים רכיבי הצאצא של <OASValidation>
.
<DisplayName>
צריך להשתמש בנוסף למאפיין name
כדי להוסיף תווית למדיניות
עורך ה-Proxy של ממשק המשתמש לניהול, בעל שם אחר שנשמע טבעי יותר.
הרכיב <DisplayName>
משותף לכל כללי המדיניות.
ערך ברירת מחדל | לא רלוונטי |
חובה? | זה שינוי אופציונלי. אם משמיטים את הערך של <DisplayName> ,
נעשה שימוש במאפיין name של המדיניות |
סוג | מחרוזת |
רכיב הורה | <PolicyElement> |
רכיבים צאצאים | ללא |
הרכיב <DisplayName>
משתמש בתחביר הבא:
תחביר
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
דוגמה
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
לרכיב <DisplayName>
אין מאפיינים או רכיבי צאצא.
<OASResource>
מציינת את מפרט OpenAPI שצריך לאמת מולו. אפשר לאחסן את הקובץ הזה:
- בהיקף של שרת ה-proxy ל-API דרך
/apiproxy/resources/oas
בחבילת ה-proxy ל-API - בקטע
Resources
בתצוגת הניווט של עורך proxy ל-API.
מידע נוסף זמין במאמר ניהול משאבים.
אפשר לציין את מפרט OpenAPI באמצעות תבנית הודעה, למשל {oas.resource.url}
.
במקרה כזה, הערך של משתנה הזרימה oas.resource.url
(בסוגריים מסולסלים) ייבדק
שיוחלפו במחרוזת המטען הייעודי (payload) בזמן הריצה.
למידע נוסף, ראו תבניות של הודעות.
ערך ברירת מחדל | ללא |
חובה? | חובה |
סוג | מחרוזת |
רכיב הורה |
<OASValidation>
|
רכיבים צאצאים | ללא |
תחביר
הרכיב <OASResource>
משתמש בתחביר הבא:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> ... </OASValidation>
דוגמה
הדוגמה הבאה מפנה למפרט my-spec.yaml
שמאוחסן במסגרת /apiproxy/resources/oas
בחבילת ה-Proxy ל-API:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> </OASValidation>
לרכיב <OASResource>
אין מאפיינים או רכיבי צאצא.
<Options>
מגדיר אפשרויות למדיניות.
ערך ברירת מחדל | לא רלוונטי |
חובה? | אופציונלי |
סוג | סוג מורכב |
רכיב הורה |
<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.
ערך ברירת מחדל | false |
חובה? | אופציונלי |
סוג | ערך בוליאני |
רכיב הורה |
<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>
המדיניות הזו מגדירה את התנהגות המדיניות אם יש פרמטרים של כותרת, שאילתה או קובץ Cookie קיימת בבקשה שאינה מוגדרת במפרט OpenAPI.
ערך ברירת מחדל | לא רלוונטי |
חובה? | אופציונלי |
סוג | סוג מורכב |
רכיב הורה |
<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>
דוגמה
בדוגמה הבאה המדיניות תיכשל אם יצוינו פרמטרים של כותרת, שאילתה או קובץ Cookie בבקשה שאינם המוגדר במפרט 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 כדי לגרום להפעלת המדיניות להיכשל.
ערך ברירת מחדל | true |
חובה? | ערך בוליאני |
סוג | סוג מורכב |
רכיב הורה |
<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 כדי לגרום להפעלת המדיניות להיכשל.
ערך ברירת מחדל | true |
חובה? | ערך בוליאני |
סוג | סוג מורכב |
רכיב הורה |
<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>
הגדרת אופן הפעולה של המדיניות אם יש פרמטרים של קובצי cookie קיימת בבקשה שאינה מוגדרת במפרט OpenAPI.
כדי לאפשר ציון פרמטרים של קובצי Cookie בבקשה שאינם מוגדרים במפרט OpenAPI, מגדירים את הפרמטר הזה כ-true. אחרת, יש להגדיר את הפרמטר הזה כ-false כדי לגרום להפעלת המדיניות להיכשל.
ערך ברירת מחדל | true |
חובה? | ערך בוליאני |
סוג | סוג מורכב |
רכיב הורה |
<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 שצריך להעריך מפני התקפות מטען ייעודי (payload) של 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 |
שגיאות בפריסה
השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שכולל את המדיניות הזו.
שם השגיאה | סיבה | |
---|---|---|
ResourceDoesNotExist |
מפרט OpenAPI שיש אליו הפניה ברכיב <OASResource> לא קיים.
|
|
ResourceCompileFailed |
מפרט OpenAPI שכלול בפריסה מכיל שגיאות שמונעות את ההידור שלו. בדרך כלל הדבר מצביע על כך שהמפרט לא מעוצב כראוי במפרט OpenAPI 3.0. | |
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 שמסוכמים בטבלה הבאה, לפי קטגוריה. גם התכונות שאינן נתמכות מפורטות ברשימה.
קטגוריה | נתמך | לא נתמך |
---|---|---|
פורמטים של סוגי נתונים | בוליאני תאריך תאריך-שעה כפול אימייל מספר ממשי (float) int32/int64 ipv4/ipv6 md5 sha1/sha256/sha512 מחרוזת URI uri-template uuid |
בינארית בייט סיסמה |
אובייקט דיסקרימינטור | מיפוי propertyName |
לא רלוונטי |
אובייקט של סוג מדיה | סכימה | קידוד דוגמה דוגמאות |
אובייקט פעולות | פרמטרים requestBody תגובות אבטחה (תמיכה חלקית) |
התקשרות חזרה הוצא משימוש שרתים |
אובייקט של פרמטרים | allowEmptyValue ב-( query , header , path )חובה תגובות סכימה סגנון ( deepObject , form , formmatrix , label , pipeDelimited , simple , spaceDelimited )הערה: ב- deepObject יש תמיכה רק בפרמטרים של מחרוזות; אין תמיכה במערכים ובאובייקטים בתוך אובייקטים.
|
allowReserved הוצא משימוש דוגמה דוגמאות רווחי |
אובייקט של Paths | מחיקה קבלה כותרת אפשרויות פרמטרים תיקון פוסט הצבת מעקב משתנים |
שרתים |
אובייקט גוף הבקשה | application/json application/hal+json application/x-www-form-urlencoded (אובייקט אחד ( encoding ) לא נתמך)תוכן חובה |
application/xml נתונים מרובי חלקים/נתונים בטופס טקסט/פשוט טקסט/XML |
אובייקט של תשובה | application/json application/hal+json application/x-www-form-urlencoded (אובייקט אחד ( encoding ) לא נתמך)תוכן כותרות |
application/xml קישורים טקסט/פשוט טקסט/XML |
אובייקט מסוג 'תשובות' | ברירת מחדל קוד מצב HTTP |
לא רלוונטי |
אובייקט סכימה | $ref תכונות נוספות (וריאנט דגל בוליאני בלבד) allOf (המערכת תתעלם אם additionalProperties הוא false )anyOf enum exclusiveMaximum/exclusiveMinimum פורמט פריטים מקסימום/מינימום maxItems/minItems maxLength/minLength maxProperties/minProperties multipleOf לא ערך null oneOf דוגמת עיצוב נכסים חובה שם פריט סוג uniqueItems |
הוצא משימוש דוגמה readOnly writeOnly xml |
אובייקט של סכימת האבטחה | in (header , query ) (המערכת תתעלם אם הערך של type הוא http )שם סוג ( apiKey , http )
|
bearerFormat עובר openIdConnectUrl סכמה |
אובייקט שרת | url משתנים |
מספר הגדרות שרת |