使用"无目标端点"在现有API代理上创建新端点。

时间:2014-03-21 21:36:39

标签: apigee

我有一个现有的apigee API代理,它有一个默认的代理端点和一个到我们后端服务器的默认目标端点。它具有速率限制(配额)策略,并在超过其分配的(每日)配额时向客户端抛出错误。一切都很棒,按预期工作。

现在我想在同一个API代理上创建一个新的代理端点(或现有默认代理端点上的新资源),但路由到"空"目标端点;我基本上只是希望这个新的代理调用返回一个关于调用者当前配额状态的JSON / JSONP(基本上显示ratelimit。{policy}。*的值,如here所述。)

实现这一目标的最佳方式是什么?

2 个答案:

答案 0 :(得分:3)

如果您使用的是UI,您可能不知道RouteRule部分在哪里。请参阅下面的蓝色箭头 - 点击"默认"文本以查看整个代理文件。

Proxy RouteRule

您可能会看到已经包含TargetEndpoint但没有条件的RouteRule部分。我之前添加了一个RouteRule,其名称为" NoTarget"和条件但没有TargetEndpoint。 RouteRules按从上到下的顺序进行评估,并选择第一个匹配条件。如果满足条件,则将使用该目标。如果没有TargetEndpoint,则不会调用目标。如果RouteRule上没有条件,它总是匹配。

因此,对于上面的示例,如果请求是GET /quotastats,则不会调用目标。否则,它将进入第二个RouteRule,并将调用默认目标。

答案 1 :(得分:0)

您可以创建一个新资源,说“checkQuotaStatus”并执行所有逻辑以获取配额状态,可以在上下文变量中设置它QuotaUsedCount(ratelimit。{policy_name} .used.count会给你这个)。现在,您可以使用流中的raisefault策略引发故障,并将响应状态设置为200,并将内容设置为您要响应的变量值,在本例中为quotaUsedCount。还要确保在您的流程中您不具备此故障规则的任何条件。这样它每次都会执行提升故障策略,而不会达到目标端点。 我希望这会有所帮助。