שלב 4: הוספת מדיניות

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

אחרי ששיניתם את נקודת הקצה (endpoint) של היעד, תוכלו להוסיף מדיניות לשרת ה-proxy.

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

במדריך הזה תוסיפו את מדיניות XMLtoJSON לשרת ה-proxy שלכם. המדיניות הזו ממירה את המטען הייעודי (payload) של הודעת XML ל-JSON. היא גם משנה את הכותרת Content-Type של התגובה.

כדי להוסיף את מדיניות ה-XML ל-JSON לשרת ה-proxy:

  1. פותחים את ממשק המשתמש של Edge בדפדפן ומתחברים.
  2. לוחצים על שרתי proxy ל-API בחלון הראשי ובוחרים שרת proxy. בדוגמה הזו, בוחרים את שרת ה-Proxy שיצרתם בשלב 1: יצירת שרת proxy ל-API.
  3. לוחצים על הכרטיסייה פיתוח:

    Edge מציג את עורך ה-API של שרת ה-proxy.

  4. בחלונית Navigator, לוחצים על Proxy Endpoints > default > PreFlow:

    Edge מציג את עורך הזרימה:

    בנוסף, ב-Edge מוצגת ברירת המחדל של הגדרת נקודת הקצה של שרת Proxy בחלונית Code (קוד):

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ProxyEndpoint name="default">
      <Description/>
      <FaultRules/>
      <PreFlow name="PreFlow">
        <Request/>
        <Response/>
      </PreFlow>
      <PostFlow name="PostFlow">
        <Request/>
        <Response/>
      </PostFlow>
      <Flows/>
      <HTTPProxyConnection>
        <BasePath>/getstarted</BasePath>
        <Properties/>
        <VirtualHost>default</VirtualHost>
        <VirtualHost>secure</VirtualHost>
      </HTTPProxyConnection>
      <RouteRule name="default">
        <TargetEndpoint>default</TargetEndpoint>
      </RouteRule>
    </ProxyEndpoint>
  5. כדי להוסיף מדיניות לשרת ה-proxy, לוחצים על הלחצן + שלב ב-PreFlow בתגובה (החצי התחתון של עורך הזרימה):

    Edge מציג רשימה מסווגת של כללי מדיניות בתיבת הדו-שיח הוספה, שניתן להוסיף לתהליך:

  6. גוללים למטה ובוחרים במדיניות XML ל-JSON בקטגוריה 'תהליך בחירת הרשת'.
  7. משאירים את שמות ברירת המחדל ולוחצים על הוספה.

    Edge מצרפת את המדיניות החדשה ל-PreFlow של התגובה:

    לתשומת ליבכם: כשלוחצים על Add (הוספה), Edge מבצע את הפעולות הבאות:

    • המדיניות החדשה תתווסף בקטע Policies (מדיניות) בחלונית Navigator.
    • מוסיף את מדיניות ה-XML ל-JSON בחלונית Flow.
    • הצגת ה-XML של הגדרת המדיניות בחלונית קוד.
  8. לוחצים על שמירה כדי לשמור את הגרסה הנוכחית עם השינויים שביצעתם.

רוצה לנסות? בחלון טרמינל, מפעילים את הפקודה curl הבאה:

curl https://org_name-test.apigee.net/getstarted

כאשר:

לחלופין, אפשר לפתוח את אותה כתובת URL בדפדפן.

התשובה הבאה אמורה להתקבל:

{
  "root": {
    "city": "San Jose",
    "firstName": "John",
    "lastName": "Doe",
    "state": "CA"
  }
}

אם גוף התגובה לא נראה כך, צריך לבדוק את הדברים הבאים:

  1. נקודת הקצה (endpoint) של היעד היא "https://mocktarget.apigee.net/xml", כפי שמתואר בשלב 3: שינוי נקודת הקצה של היעד:
    • אם בתגובה מופיעה ההודעה "שלום, אורח!", צריך להוסיף "/xml" בסוף נקודת הקצה של היעד.
    • אם מתקבל 404, צריך לבדוק שאתם ניגשים אל "apigee.net" ולא אל "apigee.com".
  2. נפרס הגרסה האחרונה של שרת ה-proxy. נסו לפרוס מחדש את שרת ה-proxy של ה-API כפי שמתואר במאמר פריסה וביטול פריסה של שרת proxy של API.

כדי לראות את בקשת ה-HTTP ואת כותרות התגובה, צריך להפעיל את דרגת המלל ב-curl באמצעות האפשרות -vs (v הופכת את התשובה למרומזת, אבל s מסתירה חלק מהפרטים הפחות מעניינים). לדוגמה:

curl -vs https://ahamilton-eval-test.apigee.net/getstarted | python -m json.tool

אתם אמורים לקבל תשובה שנראית כמו הבאה. שימו לב שהכותרת Content-Type בתגובה היא "application/json". המדיניות מסוג XML ל-JSON משנה את הכותרת לפני שליחת התגובה חזרה.

*   Trying 10.20.30.40...
* TCP_NODELAY set
* Connected to ahamilton-eval-test.apigee.net (10.20.30.40) port 443 (#0)
...
> GET /getstarted HTTP/1.1
> Host: ahamilton-eval-test.apigee.net
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Fri, 25 May 2018 16:20:00 GMT
< Content-Type: application/json;charset=UTF-8
< Content-Length: 77
< Connection: keep-alive
< X-Powered-By: Apigee
< Access-Control-Allow-Origin: *
...
{ [77 bytes data]
{
  "root": {
    "city": "San Jose",
    "firstName": "John",
    "lastName": "Doe",
    "state": "CA"
  }
}

השלב הבא

להתעמק בנתונים