將 Node.js 新增至現有的 API Proxy

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

簡介

本主題將說明如何將 Node.js 應用程式新增至本機檔案系統上的現有 Proxy,以及如何將 Proxy 部署至 Apigee Edge。

準備開發環境

在本主題中,我們假設您已在本機系統上設定 Proxy 開發環境,且想要將 Node.js 應用程式整合到其中。

包含 Node.js 應用程式的 Proxy 應用程式的基本結構會遵循下圖所示的模式,其中包含用於資源目標Proxy 的基本 /apiproxy 資料夾和子資料夾。必須將 Node.js 檔案放在 apiproxy/resources/node 資料夾中。其他資料夾則包含定義 Proxy 和目標端點、Proxy 流程、條件式流程等的 XML 檔案。如需 API Proxy 結構的完整說明,請參閱 API Proxy 設定參考資料

請記住,任何屬於 Proxy 的 Node.js 程式碼都必須放在 /apiproxy/resources/node 底下。這就是 Edge 在部署時預期找到該檔案的位置。

使用 ScriptTarget 指定 Node.js 目標

將 Node.js 整合至 Proxy 的關鍵,就是在目標端點的 XML 檔案中指定 <ScriptTarget> 元素。在 Proxy 檔案結構中,這個 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> 元素會指定後端服務 (Apigee 模擬目標服務) 的網址。

不過,在 Node.js 的情況下,Node.js 應用程式 本身 就是 目標。您可以在 apiproxy/targets/default.xml 檔案中使用 <ScriptTarget> 指定這個值。

您無須透過 <HTTPTargetConnection> 元素指定後端服務的網址,而是透過 <ScriptTarget> 元素直接參照 Node.js 應用程式,如下所示:

<TargetEndpoint name="default">
    <ScriptTarget>
         <ResourceURL>node://server.js</ResourceURL>
    </ScriptTarget>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
</TargetEndpoint>

<ResourceURL> 參數前面一律必須加上 node://,後面接著主要 Node.js 指令碼的名稱。如前所述,Node.js 資源必須位於 API Proxy 範圍的 /apiproxy/resources/node 中。

您可以在 ScriptTarget 中設定其他參數。詳情請參閱「 進階 ScriptTarget 設定」。

為了說明本例,以下是主要 Node.js 檔案的原始碼,稱為 server.js。是會在收到要求時傳回「Hello World!」的基本 HTTP 伺服器:

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');
});

總結來說,假設 main Node.js 應用程式是在名為 server.js 的檔案中實作,且端點設定都名為 default.xml,那麼包含 Node.js 指令碼的 API Proxy 就會採用下列結構:

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

準備部署應用程式

大部分的 Node.js 應用程式都有依附元件檔案,並在基本目錄中納入 package.json 檔案。在這種情況下,最佳做法是執行 npm 公用程式,確保頂層 node_modules 目錄在部署前已填入依附元件。如果有任何未包含在 node_modules 中的遠端依附元件,Node.js 應用程式就無法在 Edge 上執行。

您可以使用 npm 公用程式,輕鬆將所有依附元件擷取到檔案系統:

  1. 在 Node.js 應用程式的根目錄中執行以下指令:
$ npm install 

$ npm update

安裝依附元件後,您就可以將 Proxy 部署至 Edge。

將 Node.js 應用程式部署至 Apigee Edge

在部署前,您必須知道 Apigee Edge 帳戶的機構名稱、使用者名稱和密碼。您需要這些資訊才能正確建立部署工具指令。

指令如下:此範例假設您位於 Proxy 的根目錄中 (使用 -d 標記)。如果您的 Proxy 名稱為 foo,請從 foo 目錄輸入以下指令:

$ apigeetool deployproxy -u username -p password -o org -e test -n hellonode -d .
如要進一步瞭解各個指令旗標的意義,請執行下列步驟:

$ apigeetool deployproxy -h

如需快速導覽:

  • -n 這個標記可讓您指定在部署應用程式時將建立的 Proxy 名稱。您會在管理使用者介面中看到這個名稱。
  • -d 指定 API Proxy 的根目錄。
  • -o-e-u-p 可指定機構名稱、部署環境、使用者名稱和密碼。
就是這麼簡單!您的 Node.js 應用程式已包裝在 API Proxy 中、部署至 Edge 及執行。它正在等待要求,並準備接受測試。

測試新的 API Proxy

您剛剛在現有的 API Proxy 中新增 Node.js 應用程式,並將 Proxy 部署至 Apigee Edge!如要測試,請執行以下 cURL 指令。我們假設會使用預設的基礎路徑 (/) (基礎路徑會在 Proxy 端點設定檔中指定)。請務必將 org_name 替換為貴機構的名稱。如果您尚未安裝 cURL,請在瀏覽器中輸入網址。

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

在管理工具使用者介面中查看新的 Proxy

登入 Apigee Edge 帳戶,然後前往 API Proxy 頁面。您會在其中看到名為「hellonode」的 Proxy。

按一下「hellonode」查看 Proxy 詳細資料。在「開發」檢視畫面中,您可以看到上傳的原始碼、新增政策、編輯流程等。

後續步驟

如要瞭解如何對在 Apigee Edge 上執行的 Node.js 應用程式進行偵錯,請參閱「對 Node.js Proxy 進行偵錯與疑難排解」一文。