Выбор ответа Middle REST и документация API обновлено
Баг пагинации через offset
Вопрос
Лента заказов отдаётся GET /orders?limit=20&offset=20. Пока пользователь листает, появляется новый заказ (сортировка по дате, новые сверху). Какой баг возможен на второй странице?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Заказ с конца первой страницы появится повторно. Новый заказ сдвигает всю выборку на одну позицию, и последний элемент первой страницы окажется первым на второй: дубль.
Варианты ответа
- Заказ с конца первой страницы появится повторноправильный ответ
- Вторая страница вернёт 404 из-за сдвига
offset - Заказы на второй странице перемешаются случайно
- Ничего: offset защищает от сдвигов при вставке
Разбор
Новый заказ сдвигает всю выборку на одну позицию, и последний элемент первой страницы окажется первым на второй: дубль. При удалении обратная ситуация: элемент пропадёт. Курсорная пагинация (?after=<id или дата>) этого лишена. Хороший тест: вставить или удалить запись между запросами страниц.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.