На главную

Введение

MockLab — это размещённый в облаке фейковый REST API. Вы описываете ресурс — его поля и их типы — и получаете взамен настоящий, рабочий REST-эндпоинт: полный CRUD, пагинация, сортировка, фильтрация и поиск на основе реалистичных сгенерированных данных. Не нужно писать сервер, заполнять базу данных или держать файлы фикстур в синхронизации со схемой, которая постоянно меняется.

Главная идея: генерировать, а не хранить

Большинство инструментов для фейковых API работают, заранее вставляя строки в настоящую базу данных — а значит, объём данных, который вы можете запросить, ограничен тем, сколько строк кто-то был готов туда вставить: сотня, может быть, пара тысяч. MockLab работает иначе. Каждая запись вычисляется детерминированно из сида вашего ресурса и индекса записи — в момент запроса. Запросите запись #41, и сервер запустит маленький быстрый псевдослучайный генератор, засеянный значением (seed, 41), и каждый раз будет получать одни и те же поля — на любом сервере, в любом процессе, ни разу не обратившись к базе данных. Запросите 1 000 000 записей — и ответ придёт точно так же; единственное, что масштабируется вместе с count, — это сколько вы просите за одну страницу, но никогда не то, сколько серверу приходится хранить.

Единственное, что действительно хранится, — это ваши собственные правки. Когда вы делаете POST, PUT, PATCH или DELETE записи, это изменение сохраняется как небольшое переопределение поверх сгенерированной базовой версии. Запрос на чтение объединяет ваши переопределения со сгенерированным потоком, фильтрует и сортирует результат и возвращает страницу. Сбросьте ресурс — и переопределения исчезают: вы возвращаетесь к чистым сгенерированным данным, байт в байт идентичным тому, что было до ваших правок.

Что вы получаете для каждого ресурса

  • Живой REST-эндпоинт по адресу https://mocklab.dev/m/{project-key}/{resource-name}
  • GET (список, с пагинацией/сортировкой/фильтрацией/поиском) и GET (одна запись)
  • POST, PUT, PATCH, DELETE — настоящий путь записи, а не мок только для чтения
  • CORS включён по умолчанию, так что вы можете обращаться к API прямо из браузера
  • Локаль фейковых данных, не зависящая от языка вашего интерфейса, — так en, ru и другие локали генерируют реалистичные имена, города и адреса на соответствующем языке

Кому это нужно

Frontend-разработчикам, которым нужен бэкенд до того, как появится настоящий; студентам, изучающим работу с REST API без необходимости поднимать собственный сервер; и всем, кто прототипирует интерфейс и не хочет, чтобы миграция базы данных стала первым шагом. Если вы уже пользовались фейковым API с ограничением на количество записей и упирались в этот потолок, остальная часть документации покажется знакомой — те же принципы, но без потолка.

Переходите к разделу Быстрый старт, чтобы получить рабочий эндпоинт за пять минут, или сразу к разделу Схема и типы полей за полным справочником по полям.

const response = await fetch("https://mocklab.dev/m/demo7k2m9x/products");
const products = await response.json();
import { useQuery } from "@tanstack/react-query";

function ProductList() {
  const { data: products, isPending } = useQuery({
    queryKey: ["products"],
    queryFn: () => fetch("https://mocklab.dev/m/demo7k2m9x/products").then((res) => res.json()),
  });

  if (isPending) return <p>Loading…</p>;
  return (
    <ul>
      {products.map((product) => (
        <li key={product.id}>{product.title}</li>
      ))}
    </ul>
  );
}