אתם צופים במסמכי העזרה של Apigee Edge.
כניסה למסמכי העזרה של Apigee X. info
מידע על המדיניות בנושא OASValidation
המדיניות OASValidation (אימות של מפרט OpenAPI) מאפשרת לאמת בקשה או הודעת תגובה נכנסות בהתאם למפרט OpenAPI 3.0 (JSON או YAML). איזה תוכן מאומת?
המדיניות OASValidation מציינת את השם של מפרט OpenAPI שמשמש לאימות כשהשלב שאליו מצורפת המדיניות מופעל.
מפרט OpenAPI מאוחסן כמשאב במיקום הסטנדרטי הבא בחבילת שרת ה-proxy של ה-API: apiproxy/resources/oas
.
למפרט OpenAPI צריך להיות סיומת .json
, .yml
או .yaml
.
מוסיפים מפרט OpenAPI כמשאב לחבילת שרת proxy של API באמצעות ממשק המשתמש או ה-API, כפי שמתואר בקטע ניהול משאבים.
איזה תוכן מאומת?
בטבלה הבאה מפורט סיכום של תוכן הודעת הבקשה שמאומת על ידי המדיניות OASValidation, לפי רכיב.
רכיבים | בקש אימות |
---|---|
Basepath | אימות של נתיב הבסיס שהוגדר על ידי שרת ה-proxy של ה-API. התכונה מתעלמת מנתיב הבסיס שצוין במפרט 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
.
אימות הפרמטרים
בדוגמה הבאה המדיניות מוגדרת כך שתיכשל אם בבקשה צוינו פרמטרים של כותרת, שאילתות או קובצי 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
בתצוגת Navigator של עורך שרת ה-API.
מידע נוסף זמין במאמר ניהול משאבים.
אפשר לציין את מפרט 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
בחבילת שרת ה-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 שמפורטות בטבלה הבאה לפי קטגוריה. מוצגות גם התכונות שלא נתמכות.
קטגוריה | נתמך | לא נתמך |
---|---|---|
פורמטים של סוגי נתונים | boolean date date-time double float int32/int64 ipv4/ipv6 md5 sha1/sha256/sha512 string uri uri-template uuid |
binary byte password |
אובייקט דיסקרימינטור | mapping propertyName |
לא רלוונטי |
אובייקט של סוג מדיה | סכימה | קידוד דוגמה דוגמאות |
אובייקט Operations | parameters requestBody responses security (תמיכה חלקית) |
שרתי callbacks שיצאו משימוש |
אובייקט Parameters | 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 )content חובה |
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 |
הגדרות של כמה שרתים |