Создайте новую конечную точку на существующем прокси-сервере API без целевой конечной точки

У меня есть существующий прокси API APIGEE, который имеет конечную точку прокси по умолчанию и конечную точку по умолчанию, которая идет на наш внутренний сервер. Он имеет политику ограничения скорости (квоты) и выдает клиенту ошибку, когда он превышает выделенную (ежедневную) квоту. Все отлично и работает как задумано.

Теперь я хочу создать новую конечную точку прокси-сервера (или новый ресурс в существующей конечной точке прокси-сервера по умолчанию) на этом же прокси-сервере API, но направить на «пустую» целевую конечную точку; В основном я просто хочу, чтобы этот новый прокси-вызов возвращал JSON/JSONP о текущем статусе квоты вызывающего абонента (в основном отображал значения ratelimit.{policy}.*, как описано здесь).

что было бы лучшим способом реализовать это?


person Dexter Legaspi    schedule 21.03.2014    source источник


Ответы (2)


Если вы используете пользовательский интерфейс, вы можете не знать, где находится раздел RouteRule. См. синюю стрелку ниже — нажмите на этот текст «По умолчанию», чтобы увидеть весь прокси-файл.

Proxy RouteRule

Вы, вероятно, уже увидите раздел RouteRule, который включает TargetEndpoint, но не условие. Я добавил перед ним RouteRule с именем «NoTarget» и условием, но без TargetEndpoint. RouteRules оцениваются в порядке сверху вниз, при этом выбирается первое совпавшее условие. Если условие выполняется, эта цель будет использоваться. Без TargetEndpoint не будет вызываться цель. Если в RouteRule нет условия, оно всегда совпадает.

Итак, для приведенного выше примера, если запрос GET /quotastats, цель не будет вызываться. В противном случае он проваливается ко второму RouteRule, и будет вызываться цель по умолчанию.

person Mike Dunker    schedule 22.03.2014

Вы можете создать новый ресурс, скажем, "checkQuotaStatus" и выполнить всю логику, чтобы получить статус квоты, можно установить его в переменной контекста QuotaUsedCount (ratelimit.{policy_name}.used.count даст вам это). Теперь вы можете вызвать ошибку, используя политику повышения ошибки в потоке, и установить статус ответа как 200, а содержимое — значение переменной, с которой вы хотите ответить, в данном случае quotaUsedCount. Также убедитесь, что в вашем потоке нет никаких условий для этого правила ошибки. Таким образом, он будет выполнять политику повышения ошибки каждый раз, не затрагивая вашу целевую конечную точку. Надеюсь, это поможет.

person Vinit Mehta    schedule 21.03.2014