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

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

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

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

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

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

  1. פותחים את ממשק המשתמש של Edge בדפדפן ומתחברים.
  2. לוחצים על API Proxies בחלון הראשי ובוחרים שרת 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, לוחצים על הלחצן + שלב בקטע response PreFlow (החלק התחתון של הכלי לעריכת זרימת נתונים):

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

  6. גוללים למטה ובוחרים במדיניות XML to JSON בקטגוריה Mediation (גישור).
  7. משאירים את השמות שמוגדרים כברירת מחדל ולוחצים על הוספה.

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

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

    • המדיניות החדשה מתווספת לקטע מדיניות בחלונית סרגל הניווט.
    • הוספת מדיניות XML ל-JSON לחלונית Flow.
    • הקובץ XML של הגדרות המדיניות מוצג בחלונית Code.
  8. לוחצים על שמירה כדי לשמור את השינויים בגרסה הנוכחית.

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

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

כאשר:

אפשר גם לפתוח את אותה כתובת URL בדפדפן.

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

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

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

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

כדי לראות את כותרות הבקשה והתגובה של HTTP, מפעילים את האפשרות verbosity ב-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"
  }
}

השלב הבא

מידע נוסף