Как сделать политику ограничения скорости API в петле

Я просто хочу ограничить количество запросов API для каждого плана учетной записи, поэтому допустим, что у нас есть пользователи, и у каждого пользователя есть план, который имеет некоторые ограничения на количество запросов API в день, которые они могут делать.

Итак, теперь, как я могу создать политику ограничения API в loopback 3.x.

Спасибо


person dyaa    schedule 22.01.2017    source источник


Ответы (3)


Если вы планируете использовать Loopback на хостинге IBM Bluemix, вы можете использовать их API Connect служба, которая включает политики на основе плана клиента с регулированием на уровне API, мониторинг, выставление счетов за API и многие другие функции управления API.

Микрошлюз StrongLoop API используется API Connect но теперь с открытым исходным кодом (апрель 2017 г.).

Поскольку Loopback — это просто слой поверх Express, в качестве альтернативы вы можете просто использовать библиотеку Express.

Для ограничения скорости на одном автономном сервере Loopback вы можете использовать одну из следующих библиотек Express:

Если вы планируете использовать это на кластере серверов Loopback, вам нужно будет хранить количество вызовов API как часть общего состояния сервера для каждого пользователя или пользовательского сеанса. Предпочтительным оружием для этого является Redis, так как это высокопроизводительное хранилище данных в памяти, которое можно масштабировать. Экспресс-библиотеки с ограничением скорости, поддерживающие Redis, включают:

Наконец, вы также можете реализовать ограничение скорости на обратном прокси-сервере. См. раздел Ограничение скорости Nginx.

person Tony O'Hagan    schedule 10.10.2017

Это политика контроля доступа.

Вы можете справиться с этим с помощью пользовательских ролей, созданных преобразователем ролей.

Создав пользовательскую роль и проверив этот обратный вызов распознавателя, превысил ли текущий пользователь ограничение скорости или нет.

person Ebrahim Pasbani    schedule 22.01.2017

такую ​​политику можно* сделать только с базой данных, такой как redis/memcached. В своих проектах я полагаюсь на redback, основанный на Redis. Он имеет встроенный помощник RateLimit (среди прочего) и заботится о некоторых состояниях гонки и атомарных транзакциях.

* если у вас нет базы данных, вы можете хранить ее в памяти (в хэше или массиве) и использовать интервалы для ее очистки, но я бы выбрал redback :)

person japrescott    schedule 22.01.2017
comment
Просто из любопытства, как вы используете Redback с LoopBack? - person codejockie; 05.03.2019