获取目标端点列表

时间:2015-04-27 11:21:36

标签: apigee

我可以在javascript策略中获取目标端点列表吗?

假设我有一个连接到多个目标端点的代理端点。我是否可以编写一个javascript策略,以便在对该代理上的特定URL发出请求时,它会调用所有目标端点并聚合结果?

2 个答案:

答案 0 :(得分:1)

是的,这是可能的。 apiproxy定义本身包含为其定义的所有目标端点。

例如: curl -v https://api.enterprise.apigee.com/v1/o/ {org} / apis / {api} / revisions / {rev} / targets

会为您提供所有目标的列表。 然后,您可以通过调用以下方式从列表中获取每个目标URL:

curl -v https://api.enterprise.apigee.com/v1/o/ {org} / apis / {api} / revisions / {rev} / targets / {target}

您可以解析f​​or循环中的每个网址,然后向每个网址发出请求。如果你请求一个简单的GET调用而没有请求对象中的任何变化,比如header,body等,那么一个简单的for循环就足够了。

例如:     var geocoding = httpClient.get(URL);     context.session [“geocoding”] =地理编码;

可以在循环中为您可能拥有的所有目标端点调用此段代码。

这里唯一的问题是,要获取目标端点,您将从运行时层进行管理API调用。这意味着,如果Apigee管理层在任何时候由于计划维护而停机维护或遇到降级服务,则运行时调用往往会失败。另一种解决方案可能是隔离两个脚本:

  • 在一个javascript中获取端点列表,并将URL存储在缓存(populateCache策略)或keyvaluemaps中(假设代理端点URL不会经常更改)

  • 从缓存或kvm中读取端点列表,然后触发另一个可以调用这些端点的javascript,然后汇总响应。

答案 1 :(得分:0)

没有办法从JavaScript调用目标端点。实际上,对于代理的单个调用,您只能调用0或1个目标端点,而不是多个目标端点。

您可以使用httpClient从JavaScript中调用make多个HTTP请求,并聚合结果,但不会聚合目标端点。找到了一个例子here