首页 > 解决方案 > 如何使用 APIGEE 中的环境变量将请求路由到所需的端点

问题描述

我有一种情况,我需要根据请求命中的环境将请求路由到所需的端点。例如 QA - QA,Prod to Prod

我在初始配置期间配置了代理并定义了默认目标主机。

然后我使用 javascript 根据请求进入的环境来决定目标主机。

var env = context.getVariable('environment.name');  

if(env=="prod") {
     var host = 'https://prod.com';
}
if(env=="test") {
     var host = 'https://qa.com';
}

我在目标端点(默认)预流中使用了这个 JS 文件作为一个步骤。

我看到所有请求都发送到我在初始过程中配置的默认主机。

我在这里遗漏了什么,请帮忙。

我还看到了有关使用 Target Server Env 配置的信息。我已经配置了主机,但是如何在我的代理中引用/使用它。

标签: apigee

解决方案


我通常在Apigee的“环境配置”的键值映射中设置目标端点(与您的主机相同) 。

然后将其分配给Key Value Maps Operation 策略中的变量(例如将其分配给变量 name endpointUrl

最后,在您的目标请求消息中使用它,如下所示。

<AssignVariable>
     <Name>target.url</Name>
     <Ref>endpointUrl</Ref>
</AssignVariable>

这种方法的优点是如果您的主机发生了变化,您只需编辑键值映射中的值而不是在您的代码中编辑,并且不需要重新部署您的 API。

但是,我仅从我的工作经验中回答您。

也许您已经尝试过 Apigee 社区,您可能会找到适合您的解决方案。


推荐阅读