Частые вопросы
Нужен ли мне API-ключ или аутентификация, чтобы обращаться к своему эндпоинту?
Нет. key проекта в URL вашего эндпоинта (/m/{project-key}/{resource-name}) — это то, что
определяет принадлежность запроса вашему проекту; отдельного API-ключа или заголовка
аутентификации отправлять не нужно. Благодаря этому к ресурсу можно обращаться прямо из
браузерного JavaScript, не имея секрета, который можно было бы утечь, — и именно поэтому CORS
включён по умолчанию, чтобы браузерный код мог обращаться к API напрямую.
Почему не работает мой фильтр price_gt=50?
Существует только четыре суффикса фильтров: _gte, _lte, _ne и _like — нет _gt или
_lt (строго больше/меньше, без «или равно»). price_gt=50 при этом не отклоняется как
некорректный запрос: поскольку он не совпадает ни с одним распознаваемым суффиксом, он
трактуется как обычный фильтр точного совпадения по полю, буквально названному price_gt,
которого почти наверняка нет в вашей схеме, — так что он молча не совпадает ни с чем.
Используйте price_gte=51 (или _lte=49), чтобы выразить строгое неравенство для целочисленного
поля, или просто примите границу «или равно» для поля price, поскольку точное равенство для
сгенерированного десятичного числа вам едва ли когда-нибудь действительно нужно.
Могу ли я получать одну и ту же запись при каждом запросе?
Да, и вы уже это делаете — это гарантия детерминизма из раздела Как устроена генерация. Один и тот же неизменённый ресурс возвращает идентичные данные для одного и того же запроса при каждом обращении, с любого клиента, вечно, пока вы не запишете в него что-то или не сбросите его. Именно это позволяет безопасно писать тесты или демонстрационные скрипты, опираясь на конкретные ожидаемые значения.
Почему мой запрос сортировки/фильтрации вдруг перестал работать?
Проверьте count записей вашего ресурса. Сортировка, поиск и фильтрация доступны только при
10 000 записях или меньше; выше этого порога они молча отключаются вместо того, чтобы вызывать
ошибку, а ответ несёт заголовок X-MockLab-Notice: sort-filter-disabled-above-10000, когда это
происходит. Полную картину см. в разделе
Лимиты и добросовестное использование.
Освобождается ли id удалённой записи для повторного использования?
Нет — id удалённой записи никогда не возвращается. Удаление сохраняется как переопределение,
помечающее этот id как отсутствующий, а не как отмена самой генерации, так что один и тот же id
надёжно продолжает означать «удалено» до тех пор, пока ресурс не будет сброшен.
Могут ли два разных языка интерфейса генерировать разные фейковые данные для одного и того же ресурса?
Да, и это сделано намеренно независимым. У ресурса есть собственная locale для фейковых
данных — en, ru и так далее, — задаваемая один раз при настройке ресурса и определяющая, на
каком языке генерируются имена, города и адреса. Это никак не связано с тем, на каком языке
отображается ваш дашборд: вы можете просматривать дашборд на одном языке, пока ресурс
генерирует фейковые данные на другом.
Как получить одну запись вместо целой страницы?
Отправьте GET напрямую на URL одной записи, /m/{project-key}/{resource-name}/{id},
используя id, уже полученный из ответа списка:
const list = await fetch("https://mocklab.dev/m/demo7k2m9x/products").then((res) => res.json());
const first = await fetch(`https://mocklab.dev/m/demo7k2m9x/products/${list[0].id}`).then((res) =>
res.json(),
);import { useQuery } from "@tanstack/react-query";
function useProduct(id) {
return useQuery({
queryKey: ["products", id],
queryFn: () =>
fetch(`https://mocklab.dev/m/demo7k2m9x/products/${id}`).then((res) => res.json()),
enabled: Boolean(id),
});
}Что-то здесь не совпадает с тем, что я вижу, — что делать?
Каждый заголовок ответа, упомянутый на этих страницах (X-Total-Count, X-RateLimit-Remaining,
X-MockLab-Notice, Retry-After), — это настоящий, проверяемый сигнал, а не внутреннее
поведение, скрытое от вас; расхождение почти всегда можно объяснить, посмотрев на настоящие
заголовки запроса. Начните с них, прежде чем считать, что что-то сломано.