Замокать постраничный JSON API

GET-мок, который отдаёт страницу из трёх фейковых записей с полями page, per_page, total и next.

Шаблон отдаёт одну страницу постраничной JSON-коллекции — три фейковые записи вместе с page, per_page, total и next, — чтобы можно было собрать отрисовку списка, бесконечную прокрутку или клиент пагинации до появления настоящего эндпоинта. Записи перегенерируются на каждом вызове, и это хорошая проверка кода, который не должен рассчитывать на стабильный порядок.

Заменяет собой эндпоинт стороннего API.

Тело ответа

{"data":[{"id":"{{faker.uuid}}","name":"{{faker.name}}","email":"{{faker.email}}"},{"id":"{{faker.uuid}}","name":"{{faker.name}}","email":"{{faker.email}}"},{"id":"{{faker.uuid}}","name":"{{faker.name}}","email":"{{faker.email}}"}],"page":1,"per_page":3,"total":42,"next":"{{mock.url}}?page=2"}

Поля, на которые стоит обратить внимание

Поле Что означает
data Массив фейковых записей, по три штуки при каждом вызове через токены {{faker.*}}.
page Номер текущей страницы, захардкожен как 1.
per_page Размер страницы, захардкожен как 3.
total Общее число записей во всех страницах, захардкожено как 42.
next URL следующей страницы, собранный из токена {{mock.url}}, поэтому он указывает на этот мок.

Создать мок

curl -X POST https://quickmock.dev/api/mocks \
  -H 'Content-Type: application/json' \
  -d '{
  "method": "GET",
  "response_status": 200,
  "content_type": "application/json",
  "response_body": "{\"data\":[{\"id\":\"{{faker.uuid}}\",\"name\":\"{{faker.name}}\",\"email\":\"{{faker.email}}\"},{\"id\":\"{{faker.uuid}}\",\"name\":\"{{faker.name}}\",\"email\":\"{{faker.email}}\"},{\"id\":\"{{faker.uuid}}\",\"name\":\"{{faker.name}}\",\"email\":\"{{faker.email}}\"}],\"page\":1,\"per_page\":3,\"total\":42,\"next\":\"{{mock.url}}?page=2\"}"
}'

Вызвать

curl https://quickmock.dev/m/<slug>

Что вы получите

GET /m/<slug> -> 200 a paginated list of 3 fake records
page/per_page/total/next describe the rest of the collection

Чем это отличается от настоящего

Три записи случайны и пересоздаются при каждом вызове вместо стабильного набора настоящих данных, а next ведёт обратно на этот же мок, а не на реальную вторую страницу.

Источники

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

Работает ли ссылка next?
По ней можно перейти: next собран из токена {{mock.url}} и раскрывается в собственный адрес мока. Только переход вернёт ту же страницу, а не вторую — как сцепить настоящую вторую страницу, смотрите в следующем вопросе.
Как замокать вторую страницу?
Создайте второй мок с page = 2 и собственным next, а next первого направьте на него. Двух связанных моков достаточно, чтобы проверить, что клиент останавливается в конце, а не зацикливается.
Почему записи меняются между вызовами?
Они генерируются заново faker-токенами на каждый запрос. Это намеренно: клиент, который различает элементы списка по индексу массива, а не по id, наглядно сломается — а это как раз тот баг, который стоит ловить рано.

Готовы попробовать?

Открыть в конструкторе моков и сначала поправить

Хорошо сочетается с гайдом: Отдавать реалистичные фейковые данные

Похожие шаблоны

← Все шаблоны

Обновлено: 2026-10-17