Динамический контент (поиск, фильтры, пагинация)
Добавим поиск, фильтры и пагинацию, чтобы пользователям было проще находить нужное.
Почему это важно:
- Поиск: находить по ключевым словам
- Фильтры: жанр, год, рейтинг и т. п.
- Пагинация: эффективно работать с большими каталогами
Поиск
Обновите манифест, добавив возможность search в каталоге фильмов:
{
"catalogs": [
{
"id": "movieCatalog",
"type": "movie",
"name": "Hello, Movies",
"extra": [
{"name": "search", "isRequired": false}
]
}
]
}
Запросы поиска:
GET /catalog/movie/movieCatalog/search=jellyfish.json
Создайте файл catalog/movie/movieCatalog/search=hello.json с результатами.
Фильтры по жанрам
Обновите манифест:
{
"catalogs": [
{
"id": "movieCatalog",
"type": "movie",
"name": "Hello, Movies",
"extra": [
{"name": "search", "isRequired": false},
{"name": "genre", "isRequired": false}
],
"genres": ["Adventure", "Family", "Sci-Fi", "Demo"]
}
]
}
Создайте файлы genre=Adventure.json, genre=Sci-Fi.json, и т. п. Возвращайте пустой список, если жанр объявлен, но элементов нет.
Пагинация
Добавьте skip:
{
"catalogs": [
{
"id": "movieCatalog",
"type": "movie",
"name": "Hello, Movies",
"extra": [
{"name": "search", "isRequired": false},
{"name": "genre", "isRequired": false},
{"name": "skip", "isRequired": false}
]
}
]
}
Шаблон запросов:
/catalog/movie/movieCatalog.json/catalog/movie/movieCatalog/skip=100.json/catalog/movie/movieCatalog/skip=200.json
Возвращайте пустой список, когда данные закончились. Можно добавлять метаданные пагинации:
{"page": 2, "totalPages": 12, "metas": []}