У меня есть служба REST, которую я хотел бы ограничить использованием клиентов. API выглядит следующим образом.
/api/accounts/search/{page}/{page_size}
Поскольку запись может возвращать большой набор записей, я использую пейджинг, как описано в примере выше, используя {page} и {page_size}
I'm собираюсь использовать таблицу для отслеживания сеанса пользователя, которая будет содержать следующие столбцы.
* Client IP
* Date Created
* Any Other Table To Use If Required
Правило, которое я хочу использовать, состоит в том, чтобы запретить слишком много запросов с одного IP-адреса следующим образом:
1. New Search Request 1 per minute
2. Except if from part of a paging result set from the result. Ex page 2, 3, 4, etc. I don't want the rule for #1 to exist here.
4. Disallow making a new request while they are pulling data down from #2 ( I want to avoid someone from scraping the information).
Шаги № 2 и № 3, где я не уверен, как логически сделать или информацию, чтобы отслеживать, чтобы выполнить sh это. Из-за серверных ограничений я стараюсь не допустить, чтобы ресурсы моего сервера были исчерпаны кем-то, кто постоянно проверяет наши данные.
Я ищу советы или идеи о том, как лучше всего выполнить sh это и будет ценить несколько советов?