הוספת Node.js לשרת proxy קיים של API

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

מבוא

כאן מוסבר איך להוסיף אפליקציית Node.js לשרת proxy קיים במערכת הקבצים המקומית ואיך לפרוס את שרת ה-proxy ב-Apigee Edge.

הכנת סביבת הפיתוח

בנושא הזה, נניח שכבר מוגדרת סביבת פיתוח של שרת proxy במערכת המקומית שלכם ושאתם רוצים לשלב בה אפליקציית Node.js.

המבנה הבסיסי של אפליקציית שרת proxy שכולל אפליקציית Node.js בנוי לפי הדפוס שמוצג באיור למטה, עם תיקיית הבסיס של /apiproxy ותיקיות המשנה של משאבים, יעדים ושרתי Proxy. התיקייה apiproxy/resources/node היא המקום שבו צריך למקם את קובצי Node.js. התיקיות האחרות מכילות קובצי XML שמגדירים נקודות קצה לשרת proxy ונקודות קצה כיעד, זרימה של שרת proxy, זרימות מותנות וכו'. לתיאור מלא יותר של מבנה שרת ה-API של שרת ה-proxy, תוכלו לעיין במאמר חומר עזר בנושא הגדרת שרת proxy ל-API.

עם זאת, חשוב לזכור שכל קוד Node.js שהוא חלק משרת ה-proxy חייב להיות ממוקם כאן: /apiproxy/resources/node. במקרה הזה Edge מצפה למצוא אותו כשהיא נפרסת.

ציון היעד של Node.js עם ScriptTarget

המפתח לשילוב Node.js בשרת proxy הוא ציון הרכיב <ScriptTarget> בקובץ ה-XML של נקודת הקצה של היעד. במבנה של קובץ ה-proxy, קובץ ה-XML הזה ממוקם ב-apiproxy/targets. כברירת מחדל, שם הקובץ הוא default.xml.

לצורך הקשר, כדאי להביא בחשבון שנקודת קצה (endpoint) של יעד בדרך כלל מפנה לשירות לקצה העורפי מסוג כלשהו. במקרה הזה, נגיע לשירות יעד לדוגמה של Apigee. הגדרת נקודת הקצה של היעד נראית כך:

<TargetEndpoint name="default">
    <Description/>
    <Flows/>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
    <HTTPTargetConnection>
        <URL>http://mocktarget.apigee.net/</URL>
    </HTTPTargetConnection>
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
</TargetEndpoint>

הרכיב <HTTPTargetConnection> מציין את כתובת האתר של השירות לקצה העורפי, שירות היעד המדמה Apigee.

עם זאת, במקרה של Node.js, האפליקציה של Node.js בעצמה היא היעד. אפשר לציין זאת באמצעות <ScriptTarget> בקובץ apiproxy/targets/default.xml.

במקום להשתמש ביעד באמצעות הרכיב <HTTPTargetConnection> כדי לציין את כתובת האתר של שירות לקצה העורפי, ההפניה לאפליקציה Node.js מתבצעת ישירות באמצעות רכיב <ScriptTarget>, כמו בדוגמה הבאה:

<TargetEndpoint name="default">
    <ScriptTarget>
         <ResourceURL>node://server.js</ResourceURL>
    </ScriptTarget>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
</TargetEndpoint>

לפני הפרמטר <ResourceURL>, תמיד צריך להוסיף node://, ואחריו שם הסקריפט הראשי של Node.js. בנוסף, כפי שצוין קודם לכן, משאבי Node.js חייבים להימצא ב-/apiproxy/resources/node בהיקף ה-proxy של ה-API.

אפשר להגדיר פרמטרים נוספים ב-ScriptTarget. אפשר לקרוא פרטים נוספים במאמר בנושא הגדרות Advanced ScriptTarget.

למטרת הדוגמה הזו, הנה קוד המקור של קובץ Node.js הראשי שנקרא server.js. זהו שרת ה-HTTP הבסיסי שמחזיר את ההודעה "Hello World! " כשהוא מקבל בקשה:

var http = require('http');
console.log('node.js application starting...');
var svr = http.createServer(function(req, resp) {
    resp.end('Hello, Node!');
});

svr.listen(process.env.PORT || 9000, function() {
    console.log('Node HTTP server is listening');
});

לסיכום, בהנחה שאפליקציית Node.js העיקרית מוטמעת בקובץ בשם server.js, ושההגדרות של נקודת הקצה נקראות default.xml, לשרת ה-API של ה-API שמכיל את הסקריפט של Node.js יש את המבנה הבא:

/apiproxy/proxyName.xml
/apiproxy/proxies/default.xml
/apiproxy/targets/default.xml
/apiproxy/resources/node/server.js

הכנה לקראת פריסת האפליקציה

לרוב אפליקציות Node.js יש קובצי תלות והן כוללות קובץ package.json בספרייה הבסיסית. במקרה כזה, השיטה המומלצת היא להריץ את הכלי npm כדי לוודא שספריית node_modules ברמה העליונה מאוכלסת ביחסי התלות לפני הפריסה. אם יש יחסי תלות מרחוק שאינם כלולים ב-node_modules, אפליקציית Node.js שלכם לא תפעל ב-Edge.

אפשר לאחזר בקלות את כל יחסי התלות במערכת הקבצים באמצעות כלי העזר npm:

  1. מספריית הבסיס של אפליקציית Node.js מריצים את:
$ npm install 

או

$ npm update

לאחר התקנת יחסי התלות, אפשר לפרוס את שרת ה-proxy ל-Edge.

פריסה של אפליקציית Node.js ב-Apigee Edge

לפני הפריסה, צריך לדעת את שם הארגון, שם המשתמש והסיסמה של חשבון Apigee Edge. המידע הזה נחוץ כדי ליצור בצורה תקינה את הפקודה של כלי הפריסה.

הנה הפקודה. המערכת יוצאת מנקודה הנחה (עם הדגל -d) שאתם נמצאים בספריית השורש של שרת ה-proxy. אם שרת ה-Proxy נקרא foo, מזינים את הפקודה הבאה מספריית foo:

$ apigeetool deployproxy -u username -p password -o org -e test -n hellonode -d .
כדי להבין מה המשמעות של כל דגלי הפקודות:

$ apigeetool deployproxy -h

לסיכום מהיר:

  • -n הדגל הזה מאפשר לציין את שם שרת ה-proxy שנוצר כשהאפליקציה מופעלת. השם הזה יופיע בממשק המשתמש של הניהול.
  • -d מציין את ספריית הבסיס של שרת ה-API של שרת ה-proxy.
  • -o, -e, -u ו- -p מציינים את שם הארגון, סביבת הפריסה, שם המשתמש והסיסמה.
זהו זה. אפליקציית Node.js ארוזה בשרת proxy של API, נפרסת ל-Edge ובוצעה. הוא ממתין לבקשות ומוכן לבדיקה.

בדיקת שרת ה-API החדש

הוספת אפליקציית Node.js לשרת proxy קיים של API ופרסת את שרת ה-proxy ב-Apigee Edge! כדי לבדוק אותו, מריצים את הפקודה הזו של cURL. אנחנו מניחים שנעשה שימוש בנתיב הבסיס המוגדר כברירת מחדל (/) (נתיב הבסיס צוין בקובץ התצורה של נקודת הקצה של שרת ה-proxy). לא לשכוח להחליף את שם הארגון ב-org_name. אם cURL לא מותקן, אפשר להזין את כתובת ה-URL בדפדפן.

$ curl http://org_name-test.apigee.net/
Hello, Node!

הצגת שרת ה-proxy החדש בממשק המשתמש לניהול

נכנסים אל חשבון Apigee Edge ונכנסים לדף ממשקי proxy של API. שם יופיע שרת ה-proxy שנקרא "hellonode".

יש ללחוץ על 'hellonode' כדי להציג פרטים על שרת ה-proxy. בתצוגה 'פיתוח' אפשר לראות את קוד המקור שהעלית, להוסיף כללי מדיניות, לערוך תהליכי עבודה ועוד.

השלבים הבאים

למידע על ניפוי באגים בתוכנות Node.js שפועלות ב-Apigee Edge, עיינו בניפוי באגים ופתרון בעיות בשרתי proxy של Node.js.