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

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

บทนำ

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

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

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

โครงสร้างพื้นฐานของแอปพลิเคชันพร็อกซีที่มีแอป Node.js จะเป็นไปตามรูปแบบที่แสดงในรูปภาพด้านล่าง โดยมีโฟลเดอร์ /apiproxy หลักและโฟลเดอร์ย่อยสําหรับทรัพยากร เป้าหมาย และพร็อกซี โฟลเดอร์ 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:// นำหน้าเสมอ followed ตามด้วยชื่อสคริปต์ Node.js หลัก และตามที่ได้กล่าวไว้ก่อนหน้านี้ ทรัพยากร Node.js ต้องอยู่ใน /apiproxy/resources/node ที่ขอบเขตพร็อกซี 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 และการกำหนดค่าปลายทางทั้ง 2 รายการมีชื่อว่า 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 ระดับบนสุดมีข้อมูลเกี่ยวกับสิ่งที่ต้องพึ่งพาก่อนที่คุณจะนำไปใช้ หากมีทรัพยากรภายนอกที่ไม่ได้รวมอยู่ใน node_modules แอปพลิเคชัน Node.js จะไม่ทำงานใน Edge

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

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

หรือ

$ npm update

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

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

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

คำสั่งมีดังนี้ โดยจะถือว่า (ด้วย Flag -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