Ключ API не является подходящим инструментом для ограничения скорости , особенно если API вызывается на стороне сервера.Это работает, если код интегрирован в браузер конечного пользователя, поскольку он служит «нейтральной почвой», которая может гарантировать, что идентификация приложения не будет подделана, но не если он вызывается из службы или приложения, написанного вашими разработчиками-клиентами.
Контроль использования ресурсов является экономической проблемой , поэтому он требует экономического решения.Требование использования уникального токена hashcash для каждого вызова - хороший способ обеспечить это.(Hashcash - это схема проверки работоспособности - она требует от вызывающего абонента доказать, что он потратил кучу процессорного времени на бессмысленную задачу, чтобы доказать, что запрос имеет для них значение.)Он также масштабируется в зависимости от нагрузки - если ваш сервис перегружен, вы можете динамически увеличивать «цену» в начальных нулевых битах, требуемых в токене;каждое увеличение на один бит уменьшает частоту запросов вдвое.(Просто убедитесь, что ваш API может сообщать "цену" хеш-кэша, если он динамический.)