apigee - 如何使用 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的“环境配置”的键值映射中设置目标端点(与您的主机相同) 。
然后将其分配给Key Value Maps Operation 策略中的变量(例如将其分配给变量 name endpointUrl
)
最后,在您的目标请求消息中使用它,如下所示。
<AssignVariable>
<Name>target.url</Name>
<Ref>endpointUrl</Ref>
</AssignVariable>
这种方法的优点是如果您的主机发生了变化,您只需编辑键值映射中的值而不是在您的代码中编辑,并且不需要重新部署您的 API。
但是,我仅从我的工作经验中回答您。
也许您已经尝试过 Apigee 社区,您可能会找到适合您的解决方案。
推荐阅读
- python - 在 protobuff 中组合单个变量和重复变量以进行 Python 解析
- javascript - 如何计算已使用邀请的成员?
- ansible - ansible查找:显示为列表的问题
- php - 从 REST API 接收可点击链接
- c# - C# 互操作返回 System.Access.Violation
- c++ - 为什么将显式构造视为(隐式)缩小转换?
- aws-lambda - 如何在单击按钮进行节流的地方取消对 lambda 函数的节流
- c - 在 MATLAB 中使用 MEX-C 函数的分段错误
- c++ - 除了c ++中的段树之外,解决范围查询的有效方法是什么?
- c# - 带有复选框的 WPF 数据网格过滤器