הוספת 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 שמגדירים נקודות קצה (endpoints) ונקודות קצה של שרת proxy, זרימה של שרת proxy תזרימים מותנים וכו'. כדי לקבל תיאור מקיף יותר של מבנה ה-Proxy ל-API, ראו הסבר על תצורה של שרת 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 בעצמה היא היעד. את הערך הזה מציינים באמצעות &lt;ScriptTarget&gt; בקובץ apiproxy/targets/default.xml.

במקום להשתמש ביעד באמצעות <HTTPTargetConnection> כדי לציין את כתובת ה-URL של בשירות לקצה העורפי, יש הפניה ישירה לאפליקציה 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. פרטים נוספים זמינים במאמר הגדרה מתקדמת של 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 וגם ה-Proxy ל-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 מציין ספריית הבסיס של ה-Proxy ל-API.
  • -o, -e, -u ו- -p מציינים את שם הארגון, את סביבת הפריסה, שם המשתמש והסיסמה.
זה כל הסיפור. אפליקציית Node.js עטופה בשרת API ל-API, נפרסת ב-Edge ומופעלת. הוא ממתין לבקשות ומוכן לבדיקה.

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

הוספתם אפליקציית Node.js לשרת proxy קיים ל-API ופרסתם את שרת ה-Proxy ל-Apigee מעולה! כדי לבדוק זאת, צריך להריץ את פקודת ה-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 זמין במאמר ניפוי באגים ופתרון בעיות ב-Node.js שרתי proxy.