Лимиты и добросовестное использование
Сводка всех жёстких ограничений, которые применяет MockLab, чтобы ничто в поведении ресурса не стало сюрпризом посреди проекта.
Ограничение частоты запросов
Каждый проект ограничен 60 запросами в минуту к своим эндпоинтам /m/..., счётчик ведётся по
ключу проекта — не по ресурсу, так что проект с тремя ресурсами делит один бюджет на 60
запросов между всеми ними. Каждый ответ несёт заголовок X-RateLimit-Remaining, показывающий,
сколько запросов осталось в текущем окне, независимо от того, успешен ли запрос, — так что
корректно работающий клиент может снизить нагрузку заранее, а не узнавать о блокировке уже
постфактум.
Превысьте лимит — и получите ответ 429 Too Many Requests с заголовком Retry-After,
сообщающим, сколько секунд подождать до сброса окна.
async function fetchWithBackoff(url) {
const response = await fetch(url);
if (response.status === 429) {
const retryAfterSeconds = Number(response.headers.get("Retry-After"));
await new Promise((resolve) => setTimeout(resolve, retryAfterSeconds * 1000));
return fetchWithBackoff(url);
}
return response;
}import { useQuery } from "@tanstack/react-query";
function useProducts() {
return useQuery({
queryKey: ["products"],
queryFn: () => fetch("https://mocklab.dev/m/demo7k2m9x/products").then((res) => res.json()),
// TanStack Query already retries failed requests with backoff by default —
// a 429 here is retried automatically without any extra code.
retry: 3,
});
}Размер страницы
limit по умолчанию равен 10 и ограничен 100 — запрос на бóльшее количество не вызывает
ошибку, он просто молча уменьшается до 100. Никакого предела на общий count записей самого
ресурса нет; ограничение касается только того, сколько записей возвращается в одной странице.
Полный набор параметров пагинации — в разделе Параметры запроса.
Граница в 10 000 записей для сортировки и фильтрации
Сортировка, фильтрация и поиск доступны только для ресурсов с 10 000 записей или меньше. Выше
этого порога запрос по-прежнему выполняется успешно и корректно разбивается на страницы, но эти
параметры молча игнорируются — на что указывает заголовок ответа
X-MockLab-Notice: sort-filter-disabled-above-10000, а не ошибка, поскольку сам запрос не
является некорректным. Полное объяснение — в разделе
Как устроена генерация.
CORS
Каждый ответ /m/... включает Access-Control-Allow-Origin: * и настоящий обработчик
preflight-запросов OPTIONS, так что обращение к вашему эндпоинту напрямую из браузерного
JavaScript с любого источника работает без прокси. Немногочисленные пользовательские заголовки
ответа, упомянутые на этих страницах (X-Total-Count, X-RateLimit-Remaining и остальные),
явно открыты через Access-Control-Expose-Headers, так что response.headers.get(...) для
любого из них работает и из браузерного кода, а не только с сервера или из командной строки.
Что действительно не ограничено
Единственное, у чего нет жёсткого предела, — это count, общий размер записей ресурса. В этом
весь смысл: поскольку записи генерируются по запросу, а не хранятся, ресурс с миллионом записей
обходится серверу так же, как и ресурс с десятью. Перечисленные выше ограничения существуют,
чтобы сервис оставался честным по отношению к каждому проекту, который его использует, а не
чтобы ограничивать, что может представлять отдельный ресурс.