הגדרת תהליכי עבודה

אתם צופים במסמכי העזרה של Apigee Edge.
כניסה למסמכי העזרה של Apigee X.
info

תהליכים הם אבני הבניין הבסיסיות של שרתי proxy ל-API. באמצעות תהליכים אפשר לתכנת את ההתנהגות של ממשק API, על ידי הגדרת הסדר שבו מדיניות וקוד מתבצעים על ידי שרת proxy של API.

סקירה כללית מושגית על תהליכים מפורטת במאמר שליטה באופן שבו שרת proxy פועל באמצעות תהליכים.

בנושא הזה נסביר איך ליצור תהליכים מותנים ולהוסיף לוגיקה (כללי מדיניות) לתהליכים ברמה גבוהה. אומנות יצירת התנאים כוללת פרטים רבים יותר ממה שמוסבר בנושא הזה. פרטים נוספים זמינים במאמרים סקירה כללית של משתני תהליך ותנאים עם משתני תהליך.

צירוף כללי מדיניות לתהליכים

ב-Edge יש סוגים רבים של כללי מדיניות מוגדרים מראש, שאפשר להשתמש בהם כדי להטמיע אבטחה, לנהל את התנועה ולבצע פעולות על הודעות. בנוסף, המדיניות מאפשרת לכם להוסיף קוד מותאם אישית משלכם כדי להתאים אישית לחלוטין את עיבוד ההודעות.

לדוגמה:

  • מצרפים מדיניות אבטחת OAuth לבקשה PreFlow של ProxyEndpoint. מכיוון ש-PreFlow של בקשת ProxyEndpoint הוא התהליך הראשון בצינור עיבוד הנתונים, אפשר לדחות בקשה באופן מיידי אם היא מפירה את מדיניות האבטחה שלכם.
  • כדי להמיר תגובה מ-JSON ל-XML, צריך לצרף מדיניות המרה מ-JSON ל-XML לתהליך הפוסט-טראנספורמציה של TargetEndpoint.
  • יש לצרף מדיניות JavaScript לזרימה מותנית של נקודת ה-ProxyEndpoint כדי להריץ קוד JavaScript לעיבוד הבקשה

אחרי שיוצרים תהליך מותנה, אפשר לצרף אותו למדיניות. כשהתהליך נבחר, לוחצים על הסמל + שלב בתרשים הבקשה או התגובה כדי להוסיף מדיניות חדשה או קיימת לתהליך.

בתפריט Navigator, מודגשת דוגמה של בעיה בשם זרימה מותנית, ובחלונית Flow יוצג הלחצן Step.

בחלונית Add Step נוצרת מופע מדיניות חדש עם סוג המדיניות Quota והשם המוצג Quota-2.

כשמחברים את המדיניות לתהליך שנבחר, מגדירים את שרת ה-proxy של ה-API לאכוף את מדיניות המכסות רק על בקשות שנשלחות לשילוב של ה-URI והפעולה של התהליך הזה. לדוגמה, אם מצרפים את המדיניות לתהליך learn בבקשה, ה-XML הבא נוצר בתצוגת הקוד של עורך שרת ה-proxy:

<ProxyEndpoint name="default">
...
   <Flow name="issue">
        <Description/>
        <Request>
            <Step>
                <Name>Quota-2</Name>
            </Step>
        </Request>
        <Response/>
        <Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition>
    </Flow>
... 
</ProxyEndpoint>

בהגדרה הזו, אם נכנסת בקשת GET בשרת ה-proxy של ה-API עם דפוס URI של ‎/issue/**‎…‎ (‎/issue/ עם כל דבר ב-URI אחרי הקו נטוי האחרון), המכסה נאכפת בקריאה הזו ל-API.

מידע על תהליכים מותנים

כל המדיניות שמצורפת ל-PreFlow או ל-PostFlow תמיד מתבצעת. עם זאת, כללי המדיניות בתהליך מותנה מתבצעים רק אם התנאי של התהליך מקבל את הערך True.

במהלך העיבוד של בקשה ותגובה, מתבצע רק תהליך מותנה אחד לכל מקטע – התהליך הראשון שהתנאי שלו מקבל את הערך true. כלומר, אפשר להריץ תהליך מותנה אחד כחלק מכל אחד מהאירועים הבאים:

  • צינור עיבוד הבקשות של ProxyEndpoint
  • צינור עיבוד הבקשות של TargetEndpoint
  • צינור עיבוד התגובות של ProxyEndpoint
  • צינור עיבוד הנתונים של TargetEndpoint

סרטון: סרטון קצר עם מידע נוסף על תהליכים מותנים.

לדוגמה, ההגדרה הבאה של ProxyEndpoint מציגה תהליך מותנה שמתבצע על ידי ProxyEndpoint בכל בקשת HTTP GET לשרת ה-proxy של ה-API:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request/>
    <Response/>
  </PreFlow>   
  <Flows>
    <Flow name="Flow-1">
      <Condition>request.verb="GET"</Condition>
      <Request/>
      <Response/>
    </Flow>
  </Flows>
  <PostFlow>
    <Request/>
    <Response/>
  </PostFlow>
  ...
</ProxyEndpoint>

שימו לב שהתנאי מפנה למשתנה הזרימה request.verb. שם של משתנה זרימה הוא קובצי עזר שמכילים פרטי מצב שמשויכים לעסקת API שעברה עיבוד על ידי Edge. ב-Edge מוגדרים הרבה משתני מצב שאפשר להפנות אליהם.

שירותים מבוססי-REST הם אוספים של משאבי API. משאב API הוא מקטע נתיב ב-URI שמזהה ישות מסוימת שהמפתחים יכולים לגשת אליה על ידי קריאה ל-API. לדוגמה, אם הקצה העורפי של השירות מספק דוחות מזג אוויר ותחזיות מזג אוויר, ה-API יכול להגדיר שני תהליכים מותנים שממופים למשאבי ה-API האלה: /reports ו-/forecasts. כשקריאה ל-API כוללת אחד מהמשאבים האלה בכתובת ה-URL, התנאי מקבל את הערך true והלוגיקה שמצורפת לתהליך המותנה מופעלת.

לאחר מכן, מפתחי האפליקציות יכולים לגשת למשאבים שלכם על ידי שליחת בקשות לכתובת URL בפורמט הבא:

http://myAPIs.myCo.com/weather/reports

או:

http://myAPIs.myCo.com/weather/forecasts

בשרתי proxy של API אפשר להגדיר תהליך מותנה שתואם למשאב ספציפי:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request/>
    <Response/>
  </PreFlow>   
  <Flows>
    <Flow name="Flow-1">
      <Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition>
      <Request/>
      <Response/>
    </Flow>
    <Flow name="Flow-2">
      <Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition>
      <Request/>
      <Response/>
    </Flow>
  </Flows>
  <PostFlow>
    <Request/>
    <Response/>
  </PostFlow>
  ...
</ProxyEndpoint>

בדוגמה הזו, מציינים את משתנה התהליך proxy.pathsuffix, שמכיל את החלק של הסיומת של כתובת ה-URL שמשמש לגישה לשרת ה-proxy של ה-API. לאחר מכן תוכלו לצרף מדיניות שונה לתהליך המותנה לכל משאב.

הוספת תהליך מותנה

בדוגמה הקצרה הזו מגדירים זרימה שמופעלת רק כשהודעת הבקשה היא GET על HTTP.

כדי להוסיף תהליך מותנה, בוחרים בכרטיסייה Develop ב-API Proxy Builder.

הכרטיסייה Develop ב-Proxy Builder

לוחצים על סמל + בנקודת הקצה הרצויה.

לחצן להוספת תהליך מותנה

בטופס New Conditional Flow (תהליך מותנה חדש) אפשר לתת שם לתהליך ולהגדיר תנאי. בדוגמה הבאה מוסיפים תנאי פשוט שמעריך את ה-HTTP של הודעת הבקשה כדי למצוא פעולת GET (לעומת PUT,‏ POST וכו') בכל URI אחרי נתיב הבסיס.

בחלונית New Conditional Flow, נותנים לשרשרת האירועים את השם Flow-1 ומגדירים את סוג התנאי, הנתיב והפעולה.

(איך יוצרים תנאים בתנאי ובהגדרות של תהליך)

התהליך החדש, שנקרא Flow-1, מופיע עכשיו בתפריט Navigator.

תהליך 1 מודגש

עכשיו נבחן את הגדרת ה-XML של ProxyEndpoint. בוחרים באפשרות Flow-1 בתפריט Navigator.

ההגדרה הבאה תוצג.

<PreFlow name="PreFlow">
    <Request/>
    <Response/>
</PreFlow>   
<Flows>
    <Flow name="Flow-1">
      <Request/>
      <Response/>
      <Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
    </Flow>
</Flows>
<PostFlow name="PostFlow">
    <Request/>
    <Response/>
</PostFlow>

השלבים הבאים

בנושאים הבאים מוסבר בפירוט על בניית תנאים ושימוש במשתנים: