Замокать постраничный 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