Laravel · API · каталог товаров
REST API каталога товаров с гибкими характеристиками
Клиент:
Личный проект
Категория: Laravel
Стек: Laravel, PHP 8.2+, PostgreSQL/MySQL/SQLite, PHPUnit, GitHub Actions
Срок: 1 неделя
Проблема
Нужен был компактный REST API каталога товаров с полностью динамическими характеристиками — без фиксированной схемы полей — и гибкой фильтрацией по нескольким значениям сразу.
Ограничения
Набор характеристик должен был меняться без миграций на каждое новое поле, а фильтрация — корректно работать по множественному выбору значений, включая юникод-строки в query-параметрах.
Что сделал
- EAV-схема: товары, характеристики и их значения — без фиксированного набора полей
- Фильтрация через вложенные запросы с поддержкой множественного выбора значений
- Кэширование справочника доступных фильтров с автоинвалидацией при изменении данных
- Локализация ответов API (ru/en) через middleware
- CI: тесты на PostgreSQL, статический анализ, проверка стиля и security-аудит зависимостей на каждый пуш
Архитектура
REST API
→ EAV-модель (товары/характеристики/значения)
→ Кэш фильтров
→ CI/CD
Результат
Рабочий API с гибкой моделью данных, воспроизводимый на SQLite/MySQL/PostgreSQL без доп. настройки, с автоматической проверкой качества и безопасности при каждом изменении кода.
Что можно переиспользовать
EAV-схема с фильтрацией по множественным значениям
Кэш справочника фильтров с автоинвалидацией
CI-конфигурация: тесты + статанализ + security-аудит