您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。信息
简介
本主题介绍了如何将 Node.js 应用添加到本地文件系统上的现有代理,以及如何将代理部署到 Apigee Edge。
准备开发环境
在本主题中,我们假定您已在本地系统上设置了代理开发环境,并且您希望将 Node.js 应用集成到该环境中。
包含 Node.js 应用的代理应用的基本结构遵循下图所示的模式,其中包含一个基本 /apiproxy 文件夹以及用于资源、目标和代理的子文件夹。Node.js 文件必须放在 apiproxy/resources/node 文件夹中。其他文件夹包含用于定义代理和目标端点、代理流、条件流等的 XML 文件。如需更完整地了解 API 代理结构,请参阅 API 代理配置参考文档。
请注意,代理中的所有 Node.js 代码都必须放在 /apiproxy/resources/node 下。这正是 Edge 在部署时所希望找到的位置。
使用 ScriptTarget 指定 Node.js 目标
将 Node.js 集成到代理中的关键是在目标端点的 XML 文件中指定 <ScriptTarget> 元素。在代理文件结构中,此 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> 指定此值。
目标使用 <ScriptTarget> 元素直接引用 Node.js 应用,而不是使用 <HTTPTargetConnection> 元素指定后端服务的网址,如下所示:
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://server.js</ResourceURL> </ScriptTarget> <PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> </TargetEndpoint>
<Resource网址> 参数的开头始终必须为 node://
,后跟主 Node.js 脚本的名称。如前所述,Node.js 资源必须位于 API 代理级范围内的 /apiproxy/resources/node
中。
您可以在 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
的文件中实现的,并且端点配置都命名为 default.xml
,那么包含 Node.js 脚本的 API 代理具有以下结构:
/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 实用程序轻松将所有依赖项检索到文件系统中:
- 从 Node.js 应用的基本目录中,运行以下命令:
$ npm install
或
$ npm update
安装依赖项后,您就可以将代理部署到 Edge 了。
将 Node.js 应用部署到 Apigee Edge
在部署之前,您需要知道 Apigee Edge 账号的组织名称、用户名和密码。您需要使用此信息来正确构建部署工具命令。
命令如下:它假定(使用 -d 标志)您位于代理的根目录中。如果您的代理名为 foo,请从 foo 目录中输入以下命令:
$ apigeetool deployproxy -u username -p password -o org -e test -n hellonode -d .如需了解各个命令标志的含义,请执行以下操作:
$ apigeetool deployproxy -h
简要总结:
- -n 借助此标志,您可以指定在部署应用时要创建的代理的名称。您会在管理界面中看到此名称。
- -d 指定 API 代理的根目录。
- -o、-e、-u 和 -p 用于指定组织名称、部署环境、用户名和密码。
测试新的 API 代理
您刚刚向现有 API 代理添加了 Node.js 应用,并将该代理部署到了 Apigee Edge!如需对其进行测试,请运行此 c网址 命令。我们假定使用默认基本路径 (/)(基本路径在代理端点配置文件中指定)。请务必将您的组织名称替换为 org_name。如果您未安装 c网址,则可以在浏览器中输入网址。
$ curl http://org_name-test.apigee.net/
Hello, Node!
在管理界面中查看新代理
登录您的 Apigee Edge 账号,然后前往“API 代理”页面。您会在其中看到名为“hellonode”的代理。
点击“hellonode”可查看有关该代理的详细信息。在“开发”视图中,您可以查看自己上传的源代码、添加政策、修改流程等。
后续步骤
如需了解如何调试在 Apigee Edge 上运行的 Node.js 应用,请参阅调试和排查 Node.js 代理问题。