Web API: resolve category/product по alias|uri - #644
Conversation
Conflict resolution: keep seo (599) + menuindex (627) imports alongside new CatalogResolve.
|
Этот PR включён в тестовую интеграционную сборку всех открытых PR MiniShop3: AgelxNash/MiniShop3, ветка Сборка нужна, чтобы проверить совместимость взаимозависимых серий PR до их мержа — при последовательном слиянии они конфликтуют друг с другом. Это не ревью и не конкурирующий PR: авторство сохранено (1 PR = 1 коммит с исходным автором), ветка пересобирается по мере обновления PR. Как вошёл в сборку: Конфликты импортов в |
|
Удачи с PR! Пусть дойдёт до релиза как можно скорее — спасибо за вклад в MiniShop3! 🚀 |
|
По существу PR хороший, к вливанию почти готов — возвращаю ради одной небольшой правки в списке публичных роутов. Что подтвердилось по коду
Отдельно отмечу Локально на ветке с домердженной актуальной Что просьба поправитьНовая логика сравнения корректна: if ($route === $publicRoute || str_starts_with($route, $publicRoute . '/')) {Но в Прогнал обе логики на реальном содержимом списка:
Практического эффекта сегодня нет — группы Заодно стоит добавить в К сведениюКонфликта с Ещё одно наблюдение, не к тебе и не к этому PR: ни один публичный каталожный эндпоинт не проверяет После правки слэшей — вливаем. |
Add public GET /category/get and /product/get lookup for headless SSR routing without numeric resource ids. Cache remains a follow-up.
getSelectColumns with the FQCN as table alias produced invalid SQL for namespaced msProduct/msCategory, so alias/uri lookup always returned 404.
Align publicRoutes with segment matching so delivery/get/{id} and
payment/get/{id} stay public after the exact-or-prefix rewrite.
|
Адрес ревью:
Rebase на актуальную |
318af42 to
3c8f3f4
Compare
Описание
Публичный lookup категории и товара по
aliasилиuri(+context) для headless SSR без numeric MODX id. Ответ тот же, что уGET …/get/{id}.Контракт: ровно один из
alias/uri. Ошибки lookup → 400 с lexicon. Невидимый / чужой context / неоднозначный alias → 404.Кэш каталога (#579 cache-часть) — out of scope, follow-up. Docs #573 — вне репозитория, follow-up.
Тип изменений
Связанные Issues
Closes #579 (resolve-only; cache и docs.modx.pro/#573 — follow-up)
Как это было протестировано?
Конфигурация тестирования:
feat/issue-579-catalog-resolve-alias-uriСкриншоты (если применимо)
Чеклист
composer stan/ CI jobPHPStan)npm run lint:ciдля Vue) — Vue не трогалиДополнительные заметки
Endpoints
Реализация
CatalogResolve— parse/normalize +findUniqueId(LIMIT 2)CategoryCatalogService/ProductCatalogService—resolveByLookup→getByIdGET /getзарегистрированы передGET /get/{id}TokenMiddleware: exact path илиprefix/(без ложного match наgetting)Вне scope