Создание публичного API с помощью Azure API Management - PullRequest
0 голосов
/ 19 мая 2018

Я использую Azure API Management для управления своими веб-приложениями в Azure.
Однако я хочу сделать некоторые из моих API общедоступными и не хочу, чтобы пользователь подписывался на них.
Отписавшиеся пользователи должныя могу делать только 10 звонков в минуту.
Я создал новую подписку без ключа и добавил к ней политику ограничения скорости (10 звонков в минуту), однако, когда я делаю 10 звонков за 10 секунд, я получаюКод состояния 429, который в значительной степени понят.
Но в то же время (одна минута), если я выполняю вызовы одного и того же API с другого устройства, я все равно получаю код состояния 429.
Извторое устройство, пользователь должен иметь возможность доступа к API, поскольку он вообще не обращался к API.
Как этого можно достичь в Azure API Management .?

1 Ответ

0 голосов
/ 19 мая 2018

Читая следующий документ, я нашел решение.

https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/api-management/api-management-sample-flexible-throttling.md

<rate-limit-by-key  calls="10"
          renewal-period="60"
          counter-key="@(context.Request.IpAddress)" />

<quota-by-key calls="1000000"
          bandwidth="10000"
          renewal-period="2629800"
          counter-key="@(context.Request.IpAddress)" />

Однако с ним происходит странная вещь.
Я установил renewal-period="60" в управлении API.
Когда я делаю запросы (10 запросов в течение примерно 10 секунд), используя первое устройство (подключенное через Wi-Fi), я получаю код состояния 429 и сообщение как "message": "Rate limit is exceeded. Try again in 34 seconds."

Однако, когда я делаю запросы (10 запросов в течение примерно 10 секунд), используя второе устройство (мобильный телефон, подключенный через сотовую сеть), я должен получить сообщение о том, что повторите попытку через 50 или 60 секунд.
На втором устройстве я получаю следующее:
"message": "Rate limit is exceeded. Try again in 24 seconds."
Что странно, поскольку время указывает время обновления для первого устройства.

...