Когда мы работаем со списками в REST API, почти всегда рекомендуется использовать элементы пагинации (pagination).
Элементы пагинации позволяют реализовывать постраничную выдачу данных. Другими словами, разбивать большие объемы данных на маленькие части.
Это нужно, чтобы не загружать с сервера за один запрос весь миллион записей из БД, а делать это порциями. Такое решение экономит трафик.
Ключевые параметры пагинации (допустимы другие названия):
◽️ limit — максимальное количество записей, которые хотим получить в ответе. Query-параметр.
Альт. названия: size.
◽️ offset — смещение, с которого начинается выборка данных. Query-параметр.
Альт. названия: page, cursor.
◽️ count — общее количество записей по запросу. Возвращается в ответе, в body (JSON), вместе со списком, в запросе не передаётся.
Альт. названия: total.
Пример получения списка рецептов в #RecipeGA:
GET https://recipe-ga.com/api/users-app/2.1/recipes
Этот запрос вернет список всех рецептов.
Но что, если в БД сохранено 10 000 рецептов? Получать все за раз?
Кажется, это перебор. Никакой пользователь не будет реально читать весь этот объем данных.
Поэтому лучше получать список по частям.
👉 Вот здесь и пригодятся limit и offset!
Допустим, нужно получать по 12 рецептов за запрос:
🔸 1-й запрос: получить первые 12 рецептов
GET https://recipe-ga.com/api/users-app/2.1/recipes?limit=12&offset=0
🔸 2-й запрос: еще 12 рецептов
GET https://recipe-ga.com/api/users-app/2.1/recipes?limit=12&offset=12
🔸3-й запрос: еще 12 рецептов
GET https://recipe-ga.com/api/users-app/2.1/recipes?limit=12&offset=24
Так мы можем получать данные частями, что значительно упрощает работу с большим количеством записей.
👉 Зачем это нужно?
1. Удобство отображения: Не все данные нужно отображать сразу, особенно если их очень много.
2. Оптимизация: Запросы с меньшим количеством данных обрабатываются быстрее и требуют меньше ресурсов.
Запоминаем и пользуемся, почти по всех API есть пагинация 🙂
#RestApiGA
