การเพิ่ม Node.js ลงในพร็อกซี API ที่มีอยู่

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
ข้อมูล

เกริ่นนำ

หัวข้อนี้จะอธิบายวิธีเพิ่มแอปพลิเคชัน Node.js ไปยังพร็อกซีที่มีอยู่ในระบบไฟล์ในเครื่องและวิธีทำให้พร็อกซีใช้งานได้กับ Apigee Edge

การเตรียมความพร้อมสภาพแวดล้อมในการพัฒนา

ในหัวข้อนี้ เราถือว่าคุณได้ตั้งค่าสภาพแวดล้อมการพัฒนาพร็อกซีในระบบภายในแล้ว และคุณต้องการผสานรวมแอปพลิเคชัน Node.js เข้ากับระบบดังกล่าว

โครงสร้างพื้นฐานของแอปพลิเคชันพร็อกซีที่มีแอป Node.js จะเป็นไปตามรูปแบบที่แสดงในภาพด้านล่าง โดยมีโฟลเดอร์ /apiproxy พื้นฐานและโฟลเดอร์ย่อยสำหรับ resources, targets และ พร็อกซี โฟลเดอร์ apiproxy/resources/node เป็นที่ที่ต้องเก็บไฟล์ Node.js ส่วนโฟลเดอร์อื่นๆ จะมีไฟล์ XML ที่กำหนดพร็อกซีและปลายทางเป้าหมาย โฟลว์พร็อกซี โฟลว์แบบมีเงื่อนไข และอื่นๆ หากต้องการคำอธิบายที่สมบูรณ์ยิ่งขึ้นเกี่ยวกับโครงสร้างพร็อกซี API โปรดดูข้อมูลอ้างอิงการกำหนดค่าพร็อกซี API

อย่าลืมว่าโค้ด Node.js ที่เป็นส่วนหนึ่งของพร็อกซีต้องวางไว้ในส่วน /apiproxy/resources/node ซึ่งเป็นส่วนที่ Edge คาดหวังว่าจะพบเมื่อทำให้ใช้งานได้แล้ว

ระบุเป้าหมาย Node.js ด้วย ScriptTarget

คีย์ในการผสานรวม Node.js ในพร็อกซีคือการระบุองค์ประกอบ <ScriptTarget> ในไฟล์ XML ของปลายทางเป้าหมาย ในโครงสร้างไฟล์พร็อกซี ไฟล์ XML นี้จะอยู่ใน apiproxy/targets ชื่อไฟล์คือ default.xml

เพื่อเป็นบริบท ให้พิจารณาว่าปลายทางเป้าหมายมักจะชี้ไปยังบริการแบ็กเอนด์บางประเภท ในกรณีนี้ เรามีบริการจำลองเป้าหมายของ 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> จะระบุ URL ของบริการแบ็กเอนด์ ซึ่งเป็นบริการเป้าหมายจำลองของ Apigee

แต่ในกรณีของ Node.js แอปพลิเคชัน Node.js ตัวมันเอง จะเป็น เป้าหมาย คุณระบุด้วย <ScriptTarget> ในไฟล์ 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 ในขอบเขตพร็อกซี 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 ที่มีสคริปต์ Node.js จะมีโครงสร้างต่อไปนี้

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

เตรียมการทำให้แอปพลิเคชันใช้งานได้

แอป Node.js ส่วนใหญ่จะมีไฟล์ Dependency และมีไฟล์ package.json ไว้ในไดเรกทอรีพื้นฐาน ในกรณีนี้ แนวทางปฏิบัติแนะนำคือการเรียกใช้ยูทิลิตี npm เพื่อให้มีการเติมข้อมูลไดเรกทอรี node_modules ระดับบนสุดด้วยการอ้างอิงก่อนที่คุณจะทำให้ใช้งานได้ หากมีทรัพยากร Dependency ระยะไกลที่ไม่รวมอยู่ใน node_modules แอปพลิเคชัน Node.js ของคุณจะไม่ทำงานบน Edge

คุณสามารถเรียกข้อมูลทรัพยากร Dependency ทั้งหมดไปยังระบบไฟล์ได้ง่ายๆ โดยใช้ยูทิลิตี npm ดังนี้

  1. จากไดเรกทอรีฐานของแอปพลิเคชัน Node.js ให้เรียกใช้คำสั่งต่อไปนี้
$ npm install 

หรือ

$ npm update

เมื่อติดตั้งทรัพยากร Dependency แล้ว คุณก็พร้อมที่จะทําให้พร็อกซีใช้งานได้กับ Edge

ทำให้แอป Node.js ใช้งานได้ใน Apigee Edge

ก่อนที่จะทำให้ใช้งานได้ คุณจะต้องทราบชื่อองค์กร ชื่อผู้ใช้ และรหัสผ่านสำหรับบัญชี Apigee Edge ของคุณ คุณต้องมีข้อมูลนี้เพื่อสร้างคำสั่งเครื่องมือการทำให้ใช้งานได้อย่างถูกต้อง

นี่คือคำสั่ง โดยสมมติว่า (โดยมีแฟล็ก -d) อยู่ในไดเรกทอรีรากของพร็อกซี หากพร็อกซีชื่อ foo ให้ป้อนคำสั่งนี้จากไดเรกทอรี foo

$ apigeetool deployproxy -u username -p password -o org -e test -n hellonode -d .
ดูข้อมูลเกี่ยวกับความหมายของแฟล็กคำสั่งแต่ละรายการได้ที่

$ apigeetool deployproxy -h

หากต้องการดูข้อมูลสรุปสั้นๆ ให้ทำดังนี้

  • -n แฟล็กนี้ให้คุณระบุชื่อของพร็อกซีที่จะสร้างเมื่อมีการทำให้แอปใช้งานได้ คุณจะเห็นชื่อนี้ใน UI การจัดการ
  • -d ระบุไดเรกทอรีรากของพร็อกซี API
  • -o, -e, -u และ -p จะระบุชื่อองค์กร สภาพแวดล้อมการทำให้ใช้งานได้ ชื่อผู้ใช้ และรหัสผ่าน
เท่านี้ก็เรียบร้อย แอป Node.js ของคุณรวมอยู่ในพร็อกซี API ทำให้ใช้งานได้ใน Edge และดำเนินการแล้ว ซึ่งกำลังรอคำขอและพร้อมทดสอบ

ทดสอบพร็อกซี API ใหม่

คุณเพิ่งเพิ่มแอป Node.js ลงในพร็อกซี API ที่มีอยู่และทำให้พร็อกซีใช้งานได้กับ Apigee Edge หากต้องการทดสอบ ให้เรียกใช้คำสั่ง cURL นี้ เราถือว่ามีการใช้เส้นทางฐานเริ่มต้น (/) แล้ว (มีการระบุเส้นทางฐานในไฟล์การกำหนดค่าปลายทางของพร็อกซี) อย่าลืมแทนที่ชื่อองค์กรสำหรับ org_name หากไม่ได้ติดตั้ง cURL ไว้ คุณสามารถป้อน URL ในเบราว์เซอร์

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

ดูพร็อกซีใหม่ใน UI การจัดการ

เข้าสู่ระบบบัญชี Apigee Edge แล้วไปที่หน้าพร็อกซี API คุณจะเห็นพร็อกซีที่ชื่อ "hellonode" อยู่ในรายการ

คลิกที่ "hellonode" เพื่อดูรายละเอียดเกี่ยวกับพร็อกซี ในมุมมองการพัฒนา คุณจะเห็นซอร์สโค้ดที่อัปโหลด เพิ่มนโยบาย แก้ไขโฟลว์ และอื่นๆ

ขั้นตอนถัดไป

หากต้องการข้อมูลเกี่ยวกับการแก้ไขข้อบกพร่องของแอปพลิเคชัน Node.js ที่ทำงานบน Apigee Edge โปรดดูการแก้ไขข้อบกพร่องและการแก้ปัญหาพร็อกซีของ Node.js