Сделайте единый контракт GET /feed с cursor и limit, а ответ — списком типизированных элементов и next_cursor. Различия платформ не должны менять смысл данных.
Общий эндпоинт для получения новостной ленты
Сделайте единый контракт GET /feed с cursor и limit, а ответ — списком типизированных элементов и next_cursor. Различия платформ не должны менять смысл данных.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо построить кроссплатформенный API, который будет обслуживать запросы как от мобильного клиента, так и от веб‑приложения, выдавая им ленту с контентом. Требуется спроектировать формат входного запроса и структуру ответа так, чтобы они удовлетворяли требованиям обеих платформ и обеспечивали единый, масштабируемый доступ к ленте.
Ответ
Сделайте единый контракт GET /feed с cursor и limit, а ответ — списком типизированных элементов и next_cursor. Различия платформ не должны менять смысл данных.
Пример запроса: GET /v1/feed?limit=20&cursor=.... Ответ содержит items с id, type, published_at, author, content и media; опциональные возможности клиента можно согласовать отдельно.
Cursor должен привязываться к устойчивой сортировке с уникальным tie-breaker, фильтрам и при необходимости версии выдачи. Сервер ограничивает limit и проверяет доступ к каждой записи. Для персональной ленты кеш разделяют по пользователю и контексту; публичную можно кешировать отдельно. Платформенные компоненты интерфейса собирает клиент, а несовместимые изменения API версионируют.