Перейти к содержимому
N1
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-аудит