Начните со схемы запросов
Планируя бюджет функции обсуждений об офлайн-картах в туристическом приложении, сначала учтите: стоимость связана с запросами данных, а не с объёмом ответа. Один успешный поисковый запрос стоит один кредит независимо от того, вернул он три записи, 100 записей или пустой список. Меньшая страница может быть удобнее для чтения, но не снижает кредитную цену запроса.
Отметьте действия, которые действительно обращаются к сервису. Первый поиск, следующая страница по запросу читателя, явное обновление и поиск отдельной записи могут быть самостоятельными запросами. Прокрутка уже загруженного текста не создаёт нового запроса. Одно нажатие не обязательно равно одному кредиту, если бэкенд разделяет его на несколько вызовов.
Рассчитайте условный день
Это пример планирования, а не наблюдавшийся трафик или прогноз использования: допустим, приложение успешно выполнило 120 запросов первой страницы, 30 запросов дополнительных страниц и 10 обновлений. Итого 160 успешных запросов и 160 кредитов, или $0.16 по указанной ставке. Если 20 первых страниц были пустыми, итог остаётся 160 кредитов, поскольку эти запросы всё равно успешны.
Теперь предположим, что интерфейс автоматически получает три страницы при каждом первом поиске, даже когда их никто не читает. Тогда до учёта обновлений получилось бы 360 запросов вместо 150 первых и осознанно запрошенных следующих страниц в первом примере. Это арифметика при заданных допущениях, а не свидетельство поведения реальных пользователей. После реализации замените допущения собственным измеренным журналом запросов.
Отделяйте цену от покупки
Стандартная ставка — $1 за 1000 успешных запросов данных. Минимальное платное пополнение — $50, оно даёт 50 000 платных кредитов. Подписки нет, срок действия платных кредитов не ограничен. Поэтому гипотетический день за $0.16 описывает расход баланса, а не возможность пополнить его на $0.16.
Необязательные 100 пробных кредитов зависят от общесетевых проверок права на них и отделены от платной конвертации. Не считайте, что их получает каждая регистрация, и не представляйте функцию как бесплатный API. Войдите, создайте счёт и используйте его точную сумму, получателя, токен и сеть. Действия с аккаунтом и оплатой описаны в разделе «Ключ и кредиты».
Различайте сбои и неопределённость
HTTP 400, 401, 402 и 429 отклоняются до резервирования кредита на запрос. Они соответственно обозначают неверный ввод, отсутствующий или недействительный ключ, недостаток кредитов и ограничение частоты. При неудачном обращении к вышестоящему сервису резерв освобождается, хотя сверка может оставаться незавершённой. Не описывайте все ошибки как мгновенный возврат предыдущего списания.
Если приложение потеряло ответ после отправки запроса, ему может быть неизвестно, завершил ли сервер получение данных успешно. Повтор — ещё один запрос, а не гарантированно бесплатное продолжение. Зафиксируйте неизвестный исход, сохраните вопрос и избегайте лавины автоматических повторов. В аккаунте доступны счётчики успешных, ожидающих и возвращённых запросов для сверки.
Установите предел для функции
Для каждого поиска допускаются страницы 1–100 и не более 100 записей на запрос. Это границы сервиса, а не рекомендация получить каждую страницу. Для интерактивного чтения приложение может выбрать меньший бюджет страниц и спрашивать перед дальнейшей загрузкой. Учитывайте pagination.has_more и конечную границу окна, а не ищите пустую страницу повторными запросами.
Не считайте потенциальное окно в 10 000 записей гарантированным объёмом данных. Ответ может быть пустым, у записей могут отсутствовать поля, архив не обещает полного охвата. /v1/status не тарифицируется, но не возвращает баланс аккаунта и не проверяет исправность поиска. Локальные счётчики также нуждаются в сверке: они не доказывают, что потерянный запрос был бесплатным.
Обсудите действия, которые действительно нужны читателю
Для предлагаемой туристической панели короткой первой страницы и осознанного действия «Показать ещё» может хватить для сравнения материалов. Сохраняйте или открывайте уже имеющееся содержимое приложения без незаметного повторного получения. Если читатель явно просит проверить запись заново, объясните, что это новый поиск записи, и обработайте недоступный результат.
Решайте, нужно ли менять ограничения или представление, по собственным данным трафика. Не превращайте пример планирования в обещанную стоимость на пользователя, показатель удержания или измерение производительности. В /ru/#field-notes разобраны ограниченная пагинация и проектирование локального списка чтения.