在Apigee中使用node.js,如何确定我在prod或test中运行的环境?

时间:2014-04-17 20:25:10

标签: apigee

我尝试过像这样设置环境变量:

<EnvironmentVariable name="APIGEE_ENV" ref="environment.name" />

<EnvironmentVariable name="APIGEE_ENV">{environment.name}</EnvironmentVariable>

但这些都没有返回任何东西?

这很重要,因为我希望我的'测试'环境能够点击我的dev API服务器并'prod'来点击我的生产API服务器。

1 个答案:

答案 0 :(得分:0)

假设问题是将environment.name变量放入参数中,解决此问题的一种方法是为每个使用单独的目标:

<TargetEndpoint name="testTarget">
  <ScriptTarget>
     <ResourceURL>node://mynode.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="APIGEE_ENV">test</EnvironmentVariable> 
     </EnvironmentVariables>
  </ScriptTarget>
</TargetEndpoint>

<TargetEndpoint name="prodTarget">
  <ScriptTarget>
     <ResourceURL>node://mynode.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="APIGEE_ENV">prod</EnvironmentVariable> 
     </EnvironmentVariables>
  </ScriptTarget>
</TargetEndpoint>

然后使用RouteRules(代理文件底部)中的环境名称来选择正确的目标:

<RouteRule name="prod">
  <Condition>environment.name == "prod"</Condition>
  <TargetEndpoint>prodTarget</TargetEndpoint>
</RouteRule
<RouteRule name="test">
  <TargetEndpoint>testTarget</TargetEndpoint>
</RouteRule