/ Programming language

【 Integrate 】使用 child_process 整合 Node.js 與 Python

內容

  • 學習目標
  • 前置準備作業
  • 程式與軟體
  • Node.js 程式
  • Python 程式
  • 測試

學習目標

  • 透過 Node.js 的 Express 建立一支 API,並經由 child_process 來呼叫 Python 程式,並將結果再回傳給用戶端

前置準備作業


程式與軟體

  • Node.js
  • Python

Node.js 程式

Step 1. 建立 Node.js 環境與安裝相依套件

  • 建立專案資料夾
    • 本範例將資料夾命名為 integrating-Node-and-Python
  • 透過 終端機 切換路徑到 integrating-Node-and-Python 資料夾
    • 指令為 cd integrating-Node-and-Python
  • 請在 終端機 依序執行下方指令
    • 建立環境

      npm init -y
      

      -----2019-11-28---10.02.04

    • 建立環境

      npm i express
      

      -----2019-11-28---10.02.39

    • 建立環境

      npm i child_process
      

      -----2019-11-29---8.03.04


Step 2. 透過 Visual Studio Code 開啟專案資料夾

  • 請在 終端機 執行下方指令

    code .
    

    -----2019-11-28---10.06.53


Step 3. 撰寫 Node.js 程式

  • 新增名為 app-call-python-child-process.js 的程式
    -----2019-11-29---8.05.13

  • 程式如下

    • 說明如下
      • 第 1 與第 2 行:引用 express 套件並使用
      • 第 4 到第 6 行:啟動伺服器並在埠 3000 接聽連線
      • 第 8 行:宣告一個為 Get 方法的 API,其 Route 為 /call/python
      • 第 10 到第 27 行:為 Get /call/python API 的處理內容
      • 第 14 行:引用 child_process 套件
      • 第 16 到第 20 行:將 Query String 的 namefrom 資料傳送給 process.py 的 Python 程式執行
      • 第 22 到第 25 行:將 Python 執行完的結果存放到 data 變數中,並將結果回傳給用戶端

Python 程式

Step 1. 撰寫 Python 程式

  • 新增名為 process.py 的程式
    -----2019-11-29---8.16.47

  • 程式如下

    • 說明如下
      • 第 1 與第 2 行:引用 sysjson 套件並使用
      • 第 4 到第 7 行:將 Query String 的 namefrom 包成 result 物件
      • 第 9 行:轉成資料為字串
      • 第 11 到第 12 行:將結果回傳給 Node.js 程式

測試

Step 1. 執行 Node.js 程式

  • 請在 終端機 執行下方指令

    node app-call-python-child-process.js
    

    -----2019-11-29---8.18.42


Step 2. 開啟瀏覽器呼叫 API

  • 請在 瀏覽器 輸入下方網址

    http://localhost:3000/call/python?name=Archer&from=Taipei
    
  • 當執行成功後會顯示如下資訊

    -----2019-11-29---8.20.08


GitHub
List of blogs
Archer 阿全

Archer 阿全

Having being a software engineer. Experience with Python, JavaScript, Node.js, Objective-C, Micro:bit, Raspberry Pi, AWS, Azure, IoT. ❆ [email protected] https://oranwind.org/author/archer/

Read More