На главную

Частые вопросы

Нужен ли мне 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), — это настоящий, проверяемый сигнал, а не внутреннее поведение, скрытое от вас; расхождение почти всегда можно объяснить, посмотрев на настоящие заголовки запроса. Начните с них, прежде чем считать, что что-то сломано.