我尝试过像这样设置环境变量:
<EnvironmentVariable name="APIGEE_ENV" ref="environment.name" />
或
<EnvironmentVariable name="APIGEE_ENV">{environment.name}</EnvironmentVariable>
但这些都没有返回任何东西?
这很重要,因为我希望我的'测试'环境能够点击我的dev API服务器并'prod'来点击我的生产API服务器。
答案 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