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