บทแนะนำเป้าหมายที่โฮสต์

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

บทแนะนำต่อไปนี้จะอธิบายวิธีทำให้แอปพลิเคชัน Node.js ใช้งานได้กับ Edge โดยใช้ Hosted Targets, ซึ่งเป็นสภาพแวดล้อมรันไทม์ Node.js ที่มาพร้อมเครื่องและโฮสต์โดย Apigee

บทแนะนำจะอธิบายขั้นตอนการทำงานต่อไปนี้

  • การทำให้แอป Node.js ใช้งานได้กับ Hosted Targets โดยใช้ UI ของ Edge
  • การทำให้แอป Node.js ใช้งานได้กับ Hosted Targets จากคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์ในเครื่อง
  • การย้ายข้อมูลพร็อกซีที่มีอยู่ซึ่งมีการใช้งานเป้าหมาย Node.js แบบเดิม ของ Edge ไปยัง Hosted Targets

ทำให้แอป Node.js ใช้งานได้กับ Hosted Targets โดยใช้ UI ของ Edge

ในบทแนะนำนี้ คุณจะได้ทำให้แอป Node.js อย่างง่ายใช้งานได้กับ Hosted Targets โดยใช้ UI ของ Edge เมื่อทำตามบทแนะนำนี้จนจบ คุณจะเข้าใจโครงสร้างและเนื้อหาพื้นฐานของพร็อกซี Hosted Targets รวมถึงวิธีเข้าถึงไฟล์บันทึกการทำให้ใช้งานได้และไฟล์บันทึกบิวด์

ลงชื่อเข้าใช้

  1. ไปที่: apigee.com/edge
  2. ป้อนข้อมูลเข้าสู่ระบบของ Apigee เพื่อลงชื่อเข้าใช้

สร้างพร็อกซีใหม่

  1. ในเมนูการนำทางด้านข้าง ให้เลือกพัฒนา > พร็อกซี API
  2. คลิก + พร็อกซี
  3. ในหน้าสร้างพร็อกซี ให้เลือก Hosted Target
  4. คลิกถัดไป
  5. ป้อน hello-hosted-targets ในช่องชื่อพร็อกซี
  6. ตรวจสอบว่าได้เลือก "Hello World" Sample
  7. คลิกถัดไป
  8. ในหน้าความปลอดภัย ให้เลือก Pass through (none) สำหรับการให้สิทธิ์
  9. คลิกถัดไป
  10. คลิกถัดไป
  11. ในหน้าบิวด์ ให้ตรวจสอบว่าได้เลือกสภาพแวดล้อม test โปรดสังเกตว่าประเภทพร็อกซีคือ Hosted Targets
  12. คลิกบิวด์และทำให้ใช้งานได้ การทำให้พร็อกซีใช้งานได้อาจใช้เวลาสักครู่
  13. หลังจากทำให้พร็อกซีใช้งานได้สำเร็จแล้ว ให้คลิกดูพร็อกซี hello-hosted-targets ที่ด้านล่างของหน้า
  14. เรียกพร็อกซี API วิธีที่ง่ายที่สุดคือไปที่แท็บติดตาม เริ่มเซสชันการติดตาม แล้วคลิกส่ง คุณควรได้รับสถานะ 200 พร้อมการตอบกลับต่อไปนี้
    {"date":"2018-09-26T14:23:04.550Z","msg":"Hello, World!"}

ตรวจสอบพร็อกซี

  1. ใน UI ของ Edge ให้คลิกแท็บพัฒนา
  2. ในแถบนำทาง ให้เลือก default ในส่วนปลายทางเป้าหมาย
  3. ในเครื่องมือแก้ไขโค้ด ให้สังเกตว่ามีองค์ประกอบย่อยที่ว่างเปล่า <HostedTarget/> อยู่ใต้องค์ประกอบ <TargetEndpoint> ต้องมีแท็กที่ว่างเปล่านี้ ซึ่งจะบอก Edge ว่าเป้าหมายของพร็อกซีคือแอปพลิเคชันที่ทำให้ใช้งานได้ใน สภาพแวดล้อม Hosted Targets

  4. ในแถบนำทาง ให้สังเกตเนื้อหาในส่วนสคริปต์ ไฟล์แอป Node.js จะแสดงอยู่ในป้ายกำกับ hosted

  5. ใน UI ของ Edge ให้ตรวจสอบไฟล์ที่แสดงอยู่ใน hosted ในส่วนสคริปต์ ดังนี้
    • ไฟล์ app.yaml มีข้อมูลการกำหนดค่า เช่น คุณสามารถเพิ่มตัวแปรสภาพแวดล้อมที่จะใช้ได้กับแอปพลิเคชัน Node.js ใน รันไทม์ คุณไม่จำเป็นต้องแก้ไขไฟล์นี้สำหรับตัวอย่างนี้
    • ไฟล์ index.js เป็นไฟล์หลักของแอป Node.js
    • หากแอปมีทรัพยากร Dependency ของโมดูล คุณต้องระบุทรัพยากรเหล่านั้นใน package.json

ดูไฟล์บันทึก

ไฟล์บันทึกของแอปพลิเคชันอาจมีประโยชน์ในการแก้ไขข้อบกพร่องของปัญหาที่เกิดขึ้นในระยะบิวด์ และในรันไทม์

  1. ใน UI ของ Edge ให้คลิกแท็บพัฒนา
  2. หากต้องการดูบันทึกบิวด์ ให้คลิกบันทึกบิวด์
  3. หากต้องการดูบันทึกการทำให้ใช้งานได้ ให้คลิกบันทึกรันไทม์

    ดูเพิ่มเติมที่ การเข้าถึงไฟล์บันทึก

สรุป

  • คุณได้ทำให้แอปพลิเคชัน Node.js อย่างง่ายใช้งานได้ในสภาพแวดล้อม Hosted Targets และทดสอบ ใน UI ของ Edge
  • คุณได้เรียนรู้ว่าพร็อกซี Hosted Targets ต้องมีแท็กพิเศษที่ว่างเปล่าในปลายทางเป้าหมายที่เรียกว่า <HostedTarget/>
  • คุณได้เรียนรู้ว่า Edge จะโหลดทรัพยากร Dependency ของโมดูลให้คุณโดยอัตโนมัติ และต้องระบุทรัพยากร Dependency ในไฟล์ package.json
  • นอกจากนี้ คุณยังได้เรียนรู้วิธีตรวจสอบไฟล์บันทึกบิวด์และไฟล์บันทึกรันไทม์

ทำให้ Node.js จากระบบของคุณใช้งานได้กับ Edge

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

ติดตั้ง apigeetool

การใช้ apigeetool เป็นวิธีที่แนะนำให้นักพัฒนาซอฟต์แวร์ใช้ในการทำให้โค้ดพร็อกซี ใช้งานได้กับ Edge หากต้องการติดตั้ง apigeetool ให้เรียกใช้คำสั่ง NPM ต่อไปนี้

npm install -g apigeetool

สร้างแอป Node.js

เราได้เตรียมโค้ดสำหรับแอป Node.js อย่างง่ายไว้ให้คุณแล้วเพื่อให้การดำเนินการง่ายขึ้น

  1. สร้างไดเรกทอรีสำหรับแอป Node.js โดยตั้งชื่อไดเรกทอรีว่า node-hosted-express
  2. cd ไปยังไดเรกทอรีใหม่
  3. สร้างไฟล์ชื่อ index.js แล้วคัดลอกโค้ดนี้ลงในไฟล์ดังกล่าว
  4. var express = require('express')
    var app = express()
    
    app.get('/', function(req, res) {
        res.json({
            hello: "Hello World!"
        })
    })
    
    app.get('/hello/:name', function(req, res) {
        var name = req.params.name
        res.json({
            hello: "hello " + name
        })
    })
    
    var server = app.listen(process.env.PORT || 9000, function() {
        console.log('Listening on port %d', server.address().port)
    })
  5. สร้างไฟล์ชื่อ package.json แล้วคัดลอกโค้ดนี้ลงในไฟล์ดังกล่าว โปรดสังเกตว่า โมดูล Express แสดงอยู่ในส่วนทรัพยากร Dependency
  6. {
        "name": "hello-world",
        "version": "1.0.0",
        "main": "index.js",
        "scripts": {
            "start": "node index.js --use_strict"
        },
        "author": "",
        "license": "",
        "dependencies": {
            "express": "^4.16.0"
        }
    }
  7. สร้างไฟล์ชื่อ app.yaml แล้วคัดลอกโค้ดนี้ลงในไฟล์ดังกล่าว
  8. runtime: node
    runtimeVersion: 8
    application: my-express-app
    env:
      - name: NODE_ENV
        value: production
      - name: LOG_LEVEL
        value: 3
  9. ตรวจสอบว่าไดเรกทอรีมีลักษณะดังนี้
    ls
    app.yaml index.js package.json
    

ภาพรวมของโครงสร้างไดเรกทอรีที่จำเป็นสำหรับโค้ดแอป

แอป Node.js ต้องมี โครงสร้างเหมือนกับแอป Node.js มาตรฐาน แต่โปรดตรวจสอบว่าคุณได้ทำตามข้อกำหนดต่อไปนี้ ก่อนที่จะทำให้ใช้งานได้กับ apigeetool กับ Edge:

  • ต้องมีไฟล์ Manifest app.yaml และต้องอยู่ในไดเรกทอรีราก ของแอป ดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์นี้ได้ที่ไฟล์ Manifest
  • ต้องมีไฟล์ package.json โดยต้องระบุทรัพยากร Dependency ทั้งหมดที่ แอปต้องใช้
  • ไม่ จำเป็นต้องมีโฟลเดอร์ node_modules Edge จะเรียกใช้ npm install ให้คุณเมื่อทำให้แอป Node.js ใช้งานได้ โดยจะรับทรัพยากร Dependency จาก package.json คุณจะต้องระบุ node_modules อย่างชัดแจ้งก็ต่อเมื่อคุณมีโมดูลที่กำหนดเองซึ่งไม่พร้อมใช้งาน ผ่าน npm

การทำให้พร็อกซีใช้งานได้

  1. ในเทอร์มินัล ให้ cd ไปยังไดเรกทอรีรากของแอปพลิเคชัน Node.js
  2. เรียกใช้ apigeetool ด้วยคำสั่ง deployhostedtarget ดังนี้
  3. apigeetool deployhostedtarget -o org -e env -n proxy-name -b /node-hosted-express -u username

    โดยที่ -n คือชื่อที่คุณต้องการตั้งให้กับพร็อกซีใหม่ ชื่อต้องไม่ซ้ำกันภายในองค์กร อักขระที่คุณได้รับอนุญาตให้ใช้ในชื่อจำกัดไว้เฉพาะ อักขระต่อไปนี้: a-z0-9._\-$%

    เช่น

    apigeetool deployhostedtarget -o myorg -e test -n node-hosted-express -b /node-hosted-express -u jdoe@apigee.com

    ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ apigeetool ได้ที่ https://github.com/apigee/apigeetool-node

ทดสอบพร็อกซี

คุณสามารถทดสอบพร็อกซีด้วยคำสั่ง cURL, ไคลเอ็นต์ REST เช่น Postman หรือใน UI ของ Edge ในเครื่องมือติดตาม ตัวอย่างคำสั่ง cURL

curl http://myorg-test.apigee.net/node-hosted-express
     {"date":1506992197427,"msg":"hello-world"}

การรับบันทึกบิวด์

บันทึกบิวด์จะแสดงเอาต์พุตที่เกี่ยวข้องกับการทำให้แอป Node.js ใช้งานได้และการบิวด์แอป ดูเพิ่มเติมที่ ไฟล์บันทึก

apigeetool getlogs -u username -o org -e env --hosted-build -n proxy-name

เช่น

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-build -n node-hosted-express

การรับบันทึกรันไทม์

บันทึกรันไทม์จะแสดงเอาต์พุตที่เกี่ยวข้องกับแอปที่กำลังทำงานอยู่ บันทึกรันไทม์มีขอบเขตเป็นสภาพแวดล้อม และแสดงบันทึกสำหรับการแก้ไขพร็อกซีที่ทำให้ใช้งานได้ในปัจจุบัน ดูเพิ่มเติมที่ ไฟล์บัน1ทึก

apigeetool getlogs -u username -o org -e env --hosted-runtime -n proxy-name

เช่น

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-runtime -n node-hosted-express

การดูพร็อกซีใน UI ของ Edge

หลังจากทำให้ใช้งานได้สำเร็จแล้ว คุณจะดูและแก้ไขพร็อกซีได้ในส่วนพร็อกซี API ของ Edge UI

การย้ายข้อมูลพร็อกซี Node.js ที่มีอยู่ไปยังพร็อกซี Hosted Targets

ส่วนนี้จะอธิบายวิธีย้ายข้อมูลพร็อกซี API ของ Edge ที่มีอยู่ซึ่งใช้ การใช้งานเป้าหมาย Node.js แบบเดิมไปยัง Hosted Targets ด้วยตนเอง นอกจากนี้ยังอธิบายวิธีทำให้พร็อกซีใช้งานได้หลังจาก คุณทำตามขั้นตอนการย้ายข้อมูลแล้ว

ขั้นตอนการย้ายข้อมูลจะคงโครงสร้างพร็อกซี API, นโยบาย, โฟลว์ และองค์ประกอบการกำหนดค่าอื่นๆ ไว้ คุณสามารถทำการย้ายข้อมูลได้ใน 4 ขั้นตอน ตามที่ระบุไว้ด้านล่าง จากนั้นทำให้ พร็อกซีที่ย้ายข้อมูลแล้วใช้งานได้ด้วย apigeetool

ขั้นตอนที่ 1: ปรับโครงสร้างไฟล์พร็อกซี

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

apiproxy/
    policies/
    proxies/
    targets/
    resources/
      node/
        Your application code


สำหรับ Hosted Targets คุณต้องวางไดเรกทอรีรากของแอป Node.js ไว้ใน ไดเรกทอรีที่ชื่อ resources/hosted เพียงสร้างไดเรกทอรีใหม่ชื่อ resources/hosted แล้วย้ายเนื้อหาของ resources/node ไปยังไดเรกทอรีใหม่ จากนั้นคุณก็ลบไดเรกทอรี resources/node ได้

apiproxy/
     policies/
     proxies/
     targets/
     resources/
       hosted/
         Your application code

ขั้นตอนที่ 2: เพิ่มไฟล์ Manifest

สร้างไฟล์ Manifest ชื่อ app.yaml แล้ววางไว้ในไดเรกทอรี apiproxy/resources/hosted

ต่อไปนี้เป็นตัวอย่างไฟล์ app.yaml ซึ่งระบุว่ารันไทม์คือ Node.js (จำเป็น) นอกจากนี้ยังสร้างตัวแปรสภาพแวดล้อมในสภาพแวดล้อมการดำเนินการ (ตัวแปรที่แอป Node.js เข้าถึงได้) ตัวแปรสภาพแวดล้อมเป็นแบบไม่บังคับ และแสดงไว้ที่นี่เป็นเพียงตัวอย่าง ดูรายละเอียดและตัวอย่างเพิ่มเติมได้ที่ไฟล์ Manifest

runtime: node
  env:
    - name: NODE_ENV
      value: production


ตัวอย่างต่อไปนี้แสดงโครงสร้างโปรเจ็กต์ Node.js ที่อยู่ในตำแหน่งที่ถูกต้องใน พร็อกซีสำหรับการทำให้ Hosted Targets ใช้งานได้

apiproxy/
   resources/
      hosted/
        index.js
        node_modules/
        app.yaml
        package.json

ขั้นตอนที่ 3: ตรวจสอบว่าคุณมีไฟล์ package.json

ในพร็อกซี Node.js แบบเดิมของ Edge package.json เป็น ไม่บังคับ อย่างไรก็ตาม สำหรับ Hosted Targets คุณต้องระบุไฟล์นี้ในไดเรกทอรี apiproxy/resources/hosted อย่าลืมระบุทรัพยากร Dependency ที่จำเป็นสำหรับแอปในไฟล์นี้

ขั้นตอนที่ 4: แก้ไขปลายทางเป้าหมายของพร็อกซี

พร็อกซี Node.js แบบเดิมกำหนดให้ต้องมีแท็กที่ชื่อ <ScriptTarget> อยู่ในไฟล์ปลายทางเป้าหมาย (โดยปกติคือ /apiproxy/targets/default.xml) สำหรับ Hosted Targets คุณต้องเพิ่มแท็กที่ว่างเปล่าที่ชื่อ <HostedTarget/> หากมีแท็ก ScriptTarget ในไฟล์ คุณเพียงแค่นำแท็กดังกล่าวออก เช่น

    <?xml version="1.0" encoding="UTF-8"?>
    <TargetEndpoint name="default">
       <Description />
       <FaultRules />
       <PreFlow name="PreFlow">
          <Request />
          <Response />
       </PreFlow>
       <PostFlow name="PostFlow">
          <Request />
          <Response />
       </PostFlow>
       <Flows />
       <HostedTarget />
    </TargetEndpoint>
    

การทำให้พร็อกซีใช้งานได้

ตอนนี้คุณสามารถทำให้พร็อกซีใช้งานได้โดยใช้คำสั่ง apigeetool deployproxy

  1. cd ไปยังไดเรกทอรีรากของพร็อกซี: /apiproxy
  2. ใช้คำสั่งนี้เพื่อทำให้พร็อกซีใช้งานได้:
  3. apigeetool deployproxy -u username -o org -e env -n proxy-name -d .

    เช่น

    apigeetool deployproxy -u jdoe -o docs -e test -n hello-world -d .

ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ apigeetool ได้ที่: https://github.com/apigee/apigeetool-node/blob/master/README.md.

ทดสอบพร็อกซี

คุณสามารถทดสอบพร็อกซีด้วยคำสั่ง cURL, ไคลเอ็นต์ REST เช่น Postman หรือใน UI ของ Edge ในเครื่องมือติดตาม ตัวอย่างคำสั่ง cURL

curl http://myorg-test.apigee.net/hello-world
Hello,World!