您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
本主題說明如何從本機系統將 Node.js 應用程式部署至 Apigee Edge。在本主題中,我們將討論如何使用名為 apigeetool 的指令列工具,將 Node.js 應用程式部署至 Apigee Edge。
將 Node.js 程式碼部署至 Apigee Edge
您可以使用名為 apigeetool 的指令列公用程式,將現有的 Node.js API 應用程式 (包括任何相依的 Node.js 模組) 從本機系統部署至 Apigee Edge。這項公用程式會自動將應用程式及其依附元件,打包成 API Proxy 並部署至 Edge。
舉例來說,假設您使用 Express 在 Node.js 中建立網頁應用程式,應用程式會以 HTTP 伺服器的形式執行,監聽 HTTP 要求、處理這些要求,以及傳回資料等。使用 apigeetool 將 Node.js 應用程式部署至 Edge 時,系統會將應用程式包裝在 Proxy 中,並在 Edge 平台環境中執行。接著,您就可以透過新的 Proxy 網址呼叫應用程式,並使用 OAuth 安全性、配額政策、威脅防護政策、條件流程、快取等標準 Edge 功能「裝飾」應用程式,為其加值。
apigeetool 的用途為何?
使用 deploynodeapp 選項執行 apigeetool 公用程式時,會發生下列情況:
- 產生 API Proxy 設定套件,用於存放 Node.js 應用程式。
- 將 Node.js 應用程式與透過 NPM (Node Packaged Modules) 安裝的任何 Node.js 套件封裝在一起。
- 使用 Edge 管理 API,將 API Proxy 設定組合匯入 Apigee Edge 的指定機構。
- 將 API Proxy 部署至環境。
- 在 Apigee Edge 上執行 Node.js 應用程式,並透過網路提供服務。
準備使用 apigeetool
開始之前,請先安裝 apigeetool 公用程式。
您可以透過 npm 安裝 apigeetool,也可以從 GitHub 複製並連結程式碼。
透過 npm 安裝
apigeetool 模組及其依附元件是為 Node.js 設計,可透過 npm 使用下列指令取得:
$ sudo npm install -g apigeetool
一般來說,-g 選項會將模組放在 *nix 型電腦的 /usr/local/lib/node_modules/apigeetool 中。
從 GitHub 安裝
從 GitHub 下載或複製 API 平台工具。如需安裝操作說明,請參閱存放區根目錄中的 README 檔案。
$ git clone https://github.com/apigee/apigeetool-node.git
安裝完成後,請確認 apigeetool 可執行檔位於路徑中。如要測試,請輸入:
$ apigeetool -h
使用 apigeetool 將 Node.js 應用程式部署至 Edge
注意:部署前,您需要知道 Apigee Edge 機構名稱、使用者名稱,以及 Apigee Edge 帳戶的密碼。您需要這項資訊,才能正確組成 apigeetool 指令。
如要使用 apigeetool 部署 Node.js 應用程式,請按照下列步驟操作:
- 在終端機視窗中,
cdNode.js 應用程式的根目錄。 - 使用
deploynodeapp指令執行apigeetool公用程式:
例如:$ apigeetool deploynodeapp -n {A name for your new proxy} -d {The root directory of your Node.js app} -m {The name of the main Node.js file} -o {Your org name on Edge} -e {The environment to deploy to} -b {The base URL for your proxy} -u {Your Edge email address} -p {Your Edge password}
$ apigeetool deploynodeapp -n myNodeApp -d . -m server.js -o myorg -e test -b /myNodeApp -u ntesla -p myPassword
- 查看終端機視窗中的輸出內容。如下所示:
Importing new application myNodeApp Imported new app revision 1 Deploying revision 1 Deployed. Proxy: "myNodeApp" Revision 1 Environment: test BasePath: /myNodeApp Status: deployed
如果看到「狀態:已部署」,就表示已完成。一切順利。您的 Node.js 應用程式會包裝在 API Proxy 中,部署至 Edge,並執行及等待處理要求。即可進行測試。
- 測試 Proxy。例如:
$ curl http://myorg-test.apigee.net/myNodeApp Hello, My Node App!
- 如要這麼做,請登入 Apigee Edge 帳戶,然後前往管理 UI 的「API Proxies」頁面。您會看到新 Proxy 列於該處。
apigeetool 如何處理依附檔案和模組
如果 Node.js 應用程式依附於已安裝的模組,apigeetool 會將 node_modules 資料夾壓縮成 ZIP 檔案,並新增至 Proxy 套件,藉此處理這些模組。您無須採取其他動作。包含其他原始碼的目錄也適用相同規則。apigeetool 公用程式會將這些檔案壓縮成 ZIP 檔案,並與套件一併部署。
您無法在 Edge 管理使用者介面的編輯器中,編輯這些壓縮目錄中的檔案。如要變更這些檔案,可以匯出專案、在本機編輯檔案,然後使用 apigeetool 重新部署,或是透過管理 UI 匯入匯出的專案。另請參閱「使用 Node.js 程式碼匯出及匯入 Proxy」。
apigeetool 的基本使用資訊
如要瞭解 apigeetool 公用程式輸入參數的基本使用資訊,請輸入:
$ apigeetool deploynodeapp -h Usage: deploynodeapp -n [name] -o [organization] -e [environment] -d [directory name] -m [main script file] -u [username] -p [password] -b [base path] -l [apigee API url] -z [zip file] -i -h -o Apigee organization name -e Apigee environment name -n Apigee proxy name -d Apigee proxy directory -m Main script name: Should be at the top level of the directory -u Apigee user name -p Apigee password -b Base path (optional, defaults to /) -L Apigee API URL (optional, defaults to https://api.enterprise.apigee.com) -z ZIP file to save (optional for debugging) -i import only, do not deploy -R Resolve Node.js modules on Apigee Edge. Equivalent to running npm install on your project. -U Uploads Node.js modules to Apigee Edge. -h Print this message
使用現有 Node.js 檔案建立新的 Proxy
如要將現有的 Node.js 應用程式整合至 API Proxy,另一種方式是在建立 Proxy 時新增應用程式。您完全可以透過管理 UI 和「New API Proxy」(新增 API Proxy) 對話方塊完成這項作業。
- 在 API Proxy 摘要頁面中,按一下「+API Proxy」。
- 在「New API Proxy」對話方塊中,選取「Existing Node.js」。
- 使用「選擇檔案」按鈕選取要匯入的一或多個 Node.js 檔案。
- 為 Proxy 命名。在本範例中,我們將其命名為
hellonode。 - 將版本
/v1新增至專案基本路徑。為 API 設定版本是最佳做法。 - 按一下「Build」。
- 按一下「開發」進入「開發」檢視畫面。
- 在程式碼編輯器中開啟
TargetEndpoint檔案。 - 請務必確認
<ScriptTarget>元素指定了主要的 Node.js 檔案,如下所示:
<ScriptTarget> <ResourceURL>node://server.js</ResourceURL> <Properties/> </ScriptTarget>
- 按一下 [儲存]。
新增及叫用新的 Node.js 資源檔案
如要將 Node.js 程式碼新增至 Proxy,也可以直接新增,方法是透過 UI 或從本機檔案系統上傳。您也可以指定哪個 Node.js 檔案是主要檔案,也就是 Edge 在部署 Proxy 時叫用的檔案。
透過使用者介面新增 Node.js 檔案
管理 UI 可讓您將其他 Node.js 來源檔案新增至 Edge 平台上的 Proxy。你可以直接在使用者介面中建立這些檔案,或從檔案系統匯入。首先,讓我們看看如何透過使用者介面執行這項操作。
如要建立新的 Node.js 資源檔案,請按照下列步驟操作:
- 在「開發」檢視畫面中,從「新增」選單選取「新增指令碼」。
- 在「Add Script」對話方塊中,選取「Node」檔案類型,然後為指令碼命名。
- 按一下「Add」。

編輯器會開啟新的空白 Node.js 檔案。你可以將程式碼剪下並貼到檔案中。檔案也會顯示在「導覽器」的「Scripts」部分。
[[{"type":"media","view_mode":"media_large","fid":"2431","attributes":{"alt":"","class":"media-image","height":"312","typeof":"foaf:Image","width":"417"}}]]
從檔案系統匯入 Node.js 檔案
如要從檔案系統匯入 Node.js 檔案至 Proxy,請按照下列步驟操作:
- 在「開發」檢視畫面中,從「新增」選單選取「新增指令碼」。
- 在「新增指令碼」對話方塊中,按一下「匯入指令碼」。
- 使用檔案工具選取 Node.js 檔案。
- 檔案名稱會新增至對話方塊,但您可以視需要變更。
- 按一下「Add」。檔案會顯示在「Navigator」的「Scripts」部分,並在編輯器中開啟。
- 按一下 [儲存]。
如要叫用匯入的檔案,必須執行額外步驟,詳情請參閱下一節。
叫用匯入的 Node.js 檔案
您無法直接叫用新匯入或建立的 Node.js 檔案。這是因為 Edge 規定必須有一個 Node.js 檔案做為主要檔案。主要檔案會在目標端點定義的 <ScriptTarget> 元素中指定。如要指定哪個檔案是主要的 Node.js 檔案,請按照下列步驟操作:
- 在「Navigator」的「Target Endpoints」下方,按一下目標端點的名稱 (通常稱為「default」)。
- 在程式碼編輯器中,編輯 <ScriptTarget> 元素,將 <ResourceURL> 變更為您要設為主要 Node.js 檔案的檔案名稱。舉例來說,如果想將名為
hello-world.js的檔案設為主要檔案,請在 ResourceURL 元素中輸入node://hello-world.js。 - 按一下 [儲存]。

此時,您可以使用先前使用的任何 Proxy 路徑叫用檔案。舉例來說,我們一直在查看 Hello World! 範例,其中指定了基本路徑 v1/hello。不過,您可以編輯 Proxy 端點來變更基本路徑。
- 在「Navigator」的「Proxy Endpoints」下方,按一下 Proxy 端點的名稱 (通常稱為「default」)。
- 在程式碼編輯器中,編輯 <HttpProxyConnection> 元素,將 <BasePath> 變更為您想要的名稱。舉例來說,如果目前的 <BasePath> 是
v1/hello,而您想將其設為v1/my-node-file,請按照下列方式變更 <BasePath> 元素:
<BasePath>/v1/my-node-file</BasePath>
- 按一下 [儲存]。
- 使用新的基礎路徑叫用 Proxy,如下所示:
$ curl http://myorg-test.apigee.net/v1/my-node-file Hello, World!
使用 Node.js 程式碼匯出及匯入 Proxy
將含有 Node.js 程式碼的 Proxy 部署至 Edge 後,您隨時可以將 Proxy 匯出回系統,在系統中處理 Proxy,然後使用管理 UI 重新匯入 Edge。這種往返開發技術相當常見。
- 在 API Proxy 摘要頁面中,點選「Develop」。
- 在「開發」頁面中,選取「下載目前修訂版本」。
- 在系統中解壓縮下載的檔案。
如要將 Proxy 套件匯回 Edge,請從相同選單選取「Import Into New Revision」(匯入新修訂版本)。
您也可以使用 API 部署 Proxy。詳情請參閱「透過指令列部署 Proxy」。
後續步驟
在下一個主題「將 Node.js 新增至現有 API Proxy」中,我們會說明如何將 Node.js 應用程式新增至檔案系統中的現有 Proxy,並將其部署至 Edge。