כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
לכל ארגון יש מחזור חיים ייחודי של פיתוח תוכנה (SDLC). לעיתים קרובות יש צורך לסנכרן ולהתאים את פריסת ה-API של שרת ה-API לתהליכים שמשמשים לשירותים לקצה העורפי.
אפשר להשתמש בשיטות של Edge API שמוזכרות בנושא הזה כדי לשלב את ניהול ה-API של שרת proxy ב-SDLC של הארגון. אחד השימושים הנפוצים ב-API הזה הוא לכתוב סקריפטים או קוד שפורסים שרתי proxy של API, או מעבירים שרתי proxy של API מסביבה אחת לאחרת, כחלק מתהליך אוטומטי גדול יותר שגם פורס או מעביר אפליקציות אחרות.
ל-Edge API אין הנחות לגבי ה-SDLC שלך (או של כל אחד אחר, לצורך העניין). במקום זאת, היא חושפת פונקציות אטומיות שצוות הפיתוח שלכם יכול לתאם כדי להפוך אותן לאוטומטיות ולבצע אופטימיזציה של מחזור החיים של פיתוח ה-API.
המידע המלא זמין במאמר ממשקי API של Edge.
כדי להשתמש ב-Edge API, אתם צריכים לאמת את עצמכם בקריאות. אפשר לעשות זאת באחת מהשיטות הבאות:
- OAuth2 (ענן ציבורי בלבד)
- SAML (ענן ציבורי ופרטי)
- Basic Auth (לא מומלץ, ענן ציבורי ופרטי)
הנושא הזה מתמקד בקבוצת ממשקי API שמיועדים לניהול שרתי proxy של API.
סרטון: בסרטון הקצר הזה מוסבר איך לפרוס API.
אינטראקציה עם ה-API
בשלבים הבאים נדריך אתכם לגבי האינטראקציות הפשוטות עם ממשקי ה-API.
הצגה של רשימת ממשקי ה-API בארגון
כדי להתחיל, צריך לפרט את כל שרתי ה-proxy של ה-API בארגון. (חשוב לזכור להחליף את הרשומות של EMAIL:PASSWORD ו-ORG_NAME. להוראות, תוכלו לקרוא את המאמר שימוש ב-Edge API.
curl -u EMAIL:PASSWORD \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis
תשובה לדוגמה:
[ "weatherapi" ]
קבלת API
אפשר להפעיל את method GET
בכל שרת proxy של API בארגון. הקריאה הזו מחזירה רשימה של כל הגרסאות הזמינות של שרת ה-API של ה-API.
curl -u EMAIL:PASSWORD -H "Accept: application/json" \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi
תשובה לדוגמה:
{ "name" : "weatherapi", "revision" : [ "1" ] }
הפרטים היחידים שמוחזרים באמצעות השיטה הזו הוא השם של שרת ה-API של ה-API יחד עם הגרסה שמשויכת אליו. שרתי proxy של ה-API מורכבים מחבילה של קובצי תצורה. גרסאות קודמות מספקות מנגנון פשוט לניהול עדכוני התצורה תוך כדי חזרה. הגרסאות ממוספרות באופן רציף, וכך אפשר לבטל שינוי באמצעות פריסת גרסה קודמת של שרת ה-API של שרת ה-API. בנוסף, אפשר לפרוס גרסה קודמת של שרת proxy של API בסביבת הייצור, ולהמשיך ליצור גרסאות חדשות של שרת ה-API הזה בסביבת הבדיקה. כשתהיו מוכנים, תוכלו לקדם גרסה מתקדמת יותר של שרת ה-proxy של ה-API מסביבת הבדיקה, על הגרסה הקודמת של שרת ה-proxy של ה-API בסביבת הייצור.
בדוגמה הזו יש רק גרסה אחת כי שרת ה-proxy של ה-API נוצר הרגע. כששרת proxy ל-API נע במחזור החיים של ההגדרות האישיות והפריסה, המספר של הגרסה הקודמת גדל במספרים שלמים. באמצעות קריאות ישירות ל-API לפריסה, אפשר להגדיל את מספר הגרסה של שרת ה-API של שרת ה-API. לפעמים כשמבצעים שינויים קלים לא כדאי להגדיל את הגרסה הקודמת.
קבלת גרסה ל-API
גרסת ה-API (לדוגמה, api.company.com/v1
) אמורה להשתנות
לעתים רחוקות מאוד. כשמגדילים את גרסת ה-API, המפתחים רואים
שינוי משמעותי בחתימה של הממשק החיצוני שנחשף על ידי ה-API.
הגרסה של שרת proxy ל-API היא מספר מצטברים שמשויך לתצורה של שרת proxy של API. שירותי ה-API שומרים גרסאות קודמות של ההגדרות, כדי שאפשר יהיה לחזור לגרסה הקודמת אם משהו ישתבש. כברירת מחדל, הגרסה של שרת proxy ל-API נספרת באופן אוטומטי בכל פעם שמייבאים שרת proxy ל-API באמצעות ה-API ייבוא של שרת proxy ל-API. אם אתם לא רוצים להגדיל את הגרסה הקודמת של שרת ה-API של ה-API, אתם יכולים להשתמש ב-API עדכון של שרת proxy ל-API. אם משתמשים ב-Maven כדי לבצע פריסה, צריך להשתמש באפשרות clean
או
update
, כפי שמתואר בקובץ ה-readme של הפלאגין של Maven.
למשל, אפשר להפעיל את השיטה GET
בגרסה 1 של שרת proxy ל-API כדי לקבל תצוגה מפורטת.
curl -u EMAIL:PASSWORD -H "Accept:application/json" \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1
תשובה לדוגמה
{ "configurationVersion" : { "majorVersion" : 4, "minorVersion" : 0 }, "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}", "createdAt" : 1343178905169, "createdBy" : "andrew@apigee.com", "lastModifiedAt" : 1343178905169, "lastModifiedBy" : "andrew@apigee.com", "name" : "weatherapi", "policies" : [ ], "proxyEndpoints" : [ ], "resources" : [ ], "revision" : "1", "targetEndpoints" : [ ], "targetServers" : [ ], "type" : "Application" }
רכיבי התצורה של שרת ה-API של ממשק ה-API מתועדים בפירוט בחומר העזר בנושא תצורה של שרת proxy ל-API.
פריסת API בסביבה
אחרי ששרת ה-API מוגדר לקבלה והעברה של בקשות בצורה תקינה, אפשר לפרוס אותו
בסביבות אחת או יותר. בדרך כלל מבצעים איטרציה בשרתי proxy של API ב-test
, ולאחר מכן, כשמוכנים,
מקדמים את הגרסה הקודמת של שרת ה-proxy של ה-API ל-prod
. הרבה פעמים תגלו שיש הרבה יותר תיקונים
לשרת proxy של API בסביבת הבדיקה, בעיקר כי תעשו הרבה פחות
איטרציות בסביבת הייצור.
לא ניתן להפעיל שרת proxy של API עד שהוא נפרס בסביבה. אחרי שפורסים את הגרסה לתיקון של שרת ה-API של ה-API לצורך ייצור, אפשר לפרסם את כתובת ה-URL של prod
למפתחים חיצוניים.
איך מציינים סביבות
לכל ארגון ב-Apigee Edge יש לפחות שתי סביבות: test
ו-prod
. ההבחנה
שרירותית. המטרה היא לאפשר לכם לבדוק ששרת ה-API של ה-API פועל כמו שצריך לפני שאתם פותחים אותו למפתחים חיצוניים.
כל סביבה היא למעשה כתובת רשת בלבד, והיא מאפשרת להפריד בין תעבורת הנתונים בין שרתי ה-proxy של ה-API שאתם עובדים עליהם לבין אלה שאפליקציות ניגשות אליהם בזמן ריצה.
הסביבות גם מספקות הפרדה של נתונים ומשאבים. אפשר לדוגמה להגדיר מטמון שונה בבדיקה ובייצור, שניתן לגשת אליהם רק דרך שרתי proxy של API שפועלים בסביבה הזו.
הצגה של הסביבות בארגון
curl -u EMAIL:PASSWORD \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments
תשובה לדוגמה
[ "test", "prod" ]
עיון בפריסות
פריסה היא גרסה של שרת proxy של API שנפרס בסביבה. אפשר לגשת לשרת proxy של API שנמצא במצב פריסה דרך הרשת, בכתובות שמוגדרות ברכיב <VirtualHost>
של הסביבה הזו.
פריסת שרתי proxy של API
לא ניתן להפעיל שרתי proxy של API עד שהם נפרסים. שירותי API חושפים ממשקי API מסוג RESTful שמאפשרים שליטה על תהליך הפריסה.
בכל זמן נתון, ניתן לפרוס רק גרסה אחת של שרת proxy של API בסביבה. לכן, צריך לבטל את הפריסה של הגרסה הקודמת שנפרסה. אפשר לקבוע אם החבילה החדשה תיפרס כגרסה חדשה או אם היא תחליף את הגרסה הקודמת.
כרגע מוצג התיעוד של Apigee Edge.
נכנסים למסמכי התיעוד של
Apigee X. מידע
קודם צריך לבטל את הפריסה של הגרסה הקיימת. מציינים את שם הסביבה ואת מספר הגרסה של שרת ה-API שרוצים לבטל את הפריסה שלו:
curl -X DELETE \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \ -u EMAIL:PASSWORD
לאחר מכן לפרוס את הגרסה החדשה. הגרסה החדשה של proxy ל-API חייבת כבר להיות קיימת:
curl -X POST -H "Content-type:application/x-www-form-urlencoded" \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \ -u EMAIL:PASSWORD
פריסה חלקה (אפס זמן השבתה)
כדי לצמצם את הפוטנציאל לזמן השבתה במהלך הפריסה, צריך להשתמש בפרמטר override
בשיטת הפריסה ולהגדיר אותו לערך true
.
לא ניתן לפרוס גרסה קודמת אחת של שרת proxy של API על גבי גרסה אחרת. הראשונה תמיד
צריכה להיות לא פריסה. כשקובעים את הערך override
ל-true
, צריך לפרוס גרסה אחת
של שרת proxy של API על הגרסה הקודמת שנפרסה. כתוצאה מכך, רצף הפריסה הפוך – הגרסה החדשה נפרסה, וכשהפריסה תסתיים, הגרסה הקודמת שנפרסה לא תפרוס.
בדוגמה הבאה מגדירים את הערך override
על ידי העברתו כפרמטר של טופס:
curl -X POST -H "Content-type:application/x-www-form-urlencoded" \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments" \ -d "override=true" \ -u EMAIL:PASSWORD
אפשר לשפר את הפריסה עוד יותר על ידי הגדרת הפרמטר delay
. הפרמטר delay
מציין מרווח זמן בשניות, שלפניו יש לבטל את הפריסה של הגרסה הקודמת. כתוצאה מכך, לעסקאות בזמן טיסה יש מרווח זמן
שצריך להשלים לפני ששרת ה-proxy של ה-API מעבד את העסקה. לפניכם
מה שמתרחש כאשר מגדירים את הפרמטר override=true
והפרמטר delay
:
- גרסה 1 מטפלת בבקשות.
- גרסה 2 נפרסת במקביל.
- כשגרסה 2 נפרסת במלואה, תעבורת נתונים חדשה נשלחת לגרסה 2. לא תישלח תנועה חדשה לגרסה 1.
- עם זאת, ייתכן שגרסה 1 עדיין מעבדת עסקאות קיימות. כשמגדירים את
הפרמטר
delay
(לדוגמה, 15 שניות), נותנים לגרסה 1 15 שניות לסיום העיבוד של עסקאות קיימות. - אחרי מרווח ההשהיה, גרסה 1 לא פורסת.
curl -X POST -H "Content-type:application/x-www-form-urlencoded" \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments?delay=15" \ -d "override=true" \ -u EMAIL:PASSWORD
פרמטר שאילתה | התיאור |
---|---|
override |
ברירת המחדל היא צריך להגדיר את הערך |
delay |
כדי לאפשר את השלמת עיבוד הטרנזקציות לגרסה הקיימת לפני
הפריסה שלה — ולבטל את האפשרות ל- ברירת המחדל היא 0 (אפס) שניות. כאשר |
כשמשתמשים ב-override=true
יחד עם delay
, אפשר לבטל את התגובות של HTTP 5XX
במהלך הפריסה. הסיבה לכך היא ששתי הגרסאות של שרת proxy ל-API ייפרסו בו-זמנית, והגרסאות הישנות יותר לא תפרס לאחר העיכוב.
הצגת כל הפריסות של גרסה קודמת של API
לפעמים יש צורך לאחזר רשימה של כל הגרסאות הקודמות של שרת proxy ל-API שנפרסו.
curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1/deployments \ -u EMAIL:PASSWORD
{ "aPIProxy" : "weatherapi", "environment" : [ { "configuration" : { "basePath" : "", "steps" : [ ] }, "name" : "test", "server" : [ { "status" : "deployed", "type" : [ "message-processor" ], "uUID" : "90096dd1-1019-406b-9f42-fbb80cd01200" }, { "status" : "deployed", "type" : [ "message-processor" ], "uUID" : "7d6e2eb1-581a-4db0-8045-20d9c3306549" }, { "status" : "deployed", "type" : [ "router" ], "uUID" : "1619e2d7-c822-45e0-9f97-63882fb6a805" }, { "status" : "deployed", "type" : [ "router" ], "uUID" : "8a5f3d5f-46f8-4e99-b4cc-955875c8a8c8" } ], "state" : "deployed" } ], "name" : "1", "organization" : "org_name" }
התגובה שלמעלה מכילה מאפיינים רבים שספציפיים לתשתית הפנימית של Apigee Edge. אין לך אפשרות לשנות את ההגדרות האלה בלי להשתמש ב-Apigee Edge מקומי.
המאפיינים החשובים שכלולים בתגובה הם organization
,
environment
, aPIProxy
, name
ו-state
. על ידי
הבדיקה של ערכי המאפיינים האלה, אפשר לוודא שגרסה ספציפית של שרת proxy של API
נפרסה בסביבה.
הצגת כל הפריסות בסביבת הבדיקה
אפשר גם לאחזר את סטטוס הפריסה של סביבה ספציפית (כולל מספר הגרסה של שרת proxy ל-API שנפרס כרגע) באמצעות הקריאה הבאה:
curl -u EMAIL:PASSWORD https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/test/deployments
הפעולה הזו מחזירה את אותה תוצאה עבור כל API שנפרס בסביבת הבדיקה
הצגת כל הפריסות בארגון
כדי לאחזר רשימה של כל הגרסאות הקודמות שנפרסו בכל שרתי ה-API של ה-API בכל הסביבות, צריך להשתמש בשיטת ה-API הבאה:
curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/deployments \ -u EMAIL:PASSWORD
הפעולה הזו תחזיר את אותה תוצאה כמו למעלה בכל שרתי ה-proxy של ממשקי ה-API שנפרסו בכל הסביבות.
מכיוון שה-API הוא RESTful, אפשר פשוט להשתמש ב-method POST
, ביחד עם מטען ייעודי (payload) של JSON או XML, מול אותו משאב כדי ליצור שרת proxy ל-API.
נוצר פרופיל לשרת ה-API של ה-API. ייצוג ברירת המחדל של שרת proxy ל-API מופיע
בסימון אובייקטים של JavaScript (JSON). בהמשך מופיעה תגובת ברירת המחדל מסוג JSON לבקשת POST
שלמעלה,
שיצרה שרת proxy של API שנקרא weatherapi
. תיאור של כל רכיב בפרופיל:
{ "configurationVersion" : { "majorVersion" : 4, "minorVersion" : 0 }, "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}", "createdAt" : 1357172145444, "createdBy" : "you@yourcompany.com", "displayName" : "weatherapi", "lastModifiedAt" : 1357172145444, "lastModifiedBy" : "you@yourcompany.com", "name" : "weatherapi", "policies" : [ ], "proxyEndpoints" : [ ], "resources" : [ ], "revision" : "1", "targetEndpoints" : [ ], "targetServers" : [ ], "type" : "Application" }
פרופיל ה-API שנוצר על ידי שרת ה-API מדגים את המבנה המלא של שרת proxy ל-API:
APIProxy revision
: איטרציה ממוספרת ברצף של תצורת שרת ה-proxy של ה-API, כפי שמתוחזקת על ידי שירותי APIAPIProxy name
: השם הייחודי של שרת ה-API של שרת proxyConfigurationVersion
: גרסת שירותי API שאליה תואם תצורת שרת ה-proxy של ה-APICreatedAt
: השעה שבה נוצר שרת ה-proxy של ה-API, בפורמט זמן UNIXCreatedBy
: כתובת האימייל של משתמש Apigee Edge שיצר את שרת ה-APIDisplayName
: שם ידידותי למשתמש לשרת ה-API של שרת ה-proxyLastModifiedAt
: השעה שבה נוצר שרת ה-proxy של ה-API, בפורמט בזמן UNIXLastModifiedBy
: כתובת האימייל של משתמש Apigee Edge שיצר את שרת ה-APIPolicies
: רשימה של כללי מדיניות שנוספו לשרת proxy זה ל-APIProxyEndpoints
: רשימה של ProxyEndpointsResources
: רשימת משאבים (JavaScript, Python, Java, XSLT) הזמינים להפעלה בשרת ה-proxy הזה של ה-APITargetServers
: רשימה של TargetServers בשם (שניתן ליצור באמצעות ה-Management API), שמשמשים בהגדרות מתקדמות למטרות איזון עומסיםTargetEndpoints
: רשימה של TargetEndpoints
חשוב לשים לב שחלק גדול מהרכיבים של הגדרת שרת ה-proxy של ה-API שנוצרו באמצעות השיטה POST
הפשוטה שלמעלה הם ריקים. בנושאים הבאים נלמד איך להוסיף ולהגדיר את רכיבי המפתח של שרת proxy ל-API.
אפשר גם לקרוא על רכיבי התצורה האלה בחומר עזר בנושא תצורה של שרת proxy ל-API.
כתיבת סקריפטים מול ה-API
שימוש בשרתי ה-proxy לדוגמה של API, שזמינים ב-GitHub, מספק סקריפטים של מעטפת שאורזים את כלי הפריסה של Apigee. אם מסיבה כלשהי אין לך אפשרות להשתמש בכלי הפריסה של Python, אפשר להפעיל את ה-API ישירות. שתי הגישות מודגמות בסקריפטים לדוגמה שבהמשך.
גלישת כלי הפריסה
קודם כל, צריך לוודא שכלי הפריסה של Python זמין בסביבה המקומית שלכם.
לאחר מכן אפשר ליצור קובץ שיכיל את פרטי הכניסה שלכם. הסקריפטים לפריסה שכותבים ייבאו את ההגדרות האלה, ויעזרו לך לנהל את פרטי הכניסה של החשבון בצורה מרוכזת. בדוגמת פלטפורמת ה-API, הקובץ הזה נקרא setenv.sh
.
#!/bin/bash org="Your ORG on enterprise.apigee.com" username="Your USERNAME on enterprise.apigee.com" # While testing, it's not necessary to change the setting below env="test" # Change the value below only if you have an on-premise deployment url="https://api.enterprise.apigee.com" # Change the value below only if you have a custom domain api_domain="apigee.net" export org=$org export username=$username export env=$env export url=$url export api_domain=$api_domain
בקובץ שלמעלה, כל ההגדרות שלך יהיו זמינות לסקריפטים של המעטפת שאורזים את כלי הפריסה.
עכשיו יוצרים סקריפט מעטפת שמייבא את ההגדרות האלה ומשתמש בהן כדי לקרוא לכלי הפריסה. (לדוגמה: דוגמאות לפלטפורמת API של Apigee).
#!/bin/bash source path/to/setenv.sh echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:" read -s password echo Deploying $proxy to $env on $url using $username and $org path/to/deploy.py -n {api_name} -u $username:$password -o $org -h $url -e $env -p / -d path/to/apiproxy
כדי להקל עליך מאוד, מומלץ ליצור גם סקריפט להפעלה ולבדיקה של ה-API באופן הבא:
#!/bin/bash echo Using org and environment configured in /setup/setenv.sh source /path/to/setenv.sh set -x curl "http://$org-$env.apigee.net/{api_basepath}"
הפעלה ישירה של ה-API
כדאי לכתוב סקריפטים מעטפת פשוטים שהופכים את תהליך ההעלאה והפריסה של שרתי proxy ל-API לאוטומטי.
הסקריפט שלמטה מפעיל ישירות את ממשק ה-API לניהול. הוא מבטל את הפריסה הקיימת של
שרת ה-Proxy של ה-API שאתם מעדכנים, יוצר קובץ ZIP מהספרייה /apiproxy
שמכילה את קובצי התצורה של שרת ה-Proxy, ולאחר מכן מעלה, מייבאים ופורסים את
התצורה.
#!/bin/bash #This sets the name of the API proxy and the basepath where the API will be available api=api source /path/to/setenv.sh echo Delete the DS_store file on OSX echo find . -name .DS_Store -print0 | xargs -0 rm -rf find . -name .DS_Store -print0 | xargs -0 rm -rf echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:" read -s password echo Undeploy and delete the previous revision # Note that you need to explicitly update the revision to be undeployed. # One benefit of the Python deploy tool is that it manages this for you. curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X DELETE curl -k -u $username:$password -X DELETE "$url/v1/o/$org/apis/$api/revisions/1" rm -rf $api.zip echo Create the API proxy bundle and deploy zip -r $api.zip apiproxy echo Import the new revision to $env environment curl -k -v -u $username:$password "$url/v1/o/$org/apis?action=import&name=$api" -T $api.zip -H "Content-Type: application/octet-stream" -X POST echo Deploy the new revision to $env environment curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X POST