LINUX.ORG.RU

Можно ли сделать пред и постобработчики для всех URL'ов в Mojo?

 ,


1

1

Собственно, для реализации единой логики кеширования хочу сделать некий «хук», позволяющий делать пред и постобработку запросов к API.

Общий для всех URL'ов предобработчик должен посмотреть, не закончилось ли для данного /target'а время кеширования результата запроса с момента последнего получения «живых данных» и, если ещё нужно кешировать - он должен просто вернуть данные из кеша, завершив всю обработку.

Обработчики для конкретных URL'ов (например, для «/weatherinfo» или «/currency») - должны получить свежие, «живые» данные, поскольку предобработчик не завершил цикл, а значит - данные в кеше протухли

Постобработчик, единый для всех URL'ов, должен записывать полученные обработчиком для конкретного URL'а «живые данные» в кеш (в Redis, если на то пошло) и обновлять метку времени последнего получения «живых данных» для данного URL.

Перечитал по диагонали пока документацию по Mojolicious::Lite - ничего подобного не нашёл. Может, плохо смотрел.

Для Mojolicious есть какой-то хитрый вариант навешивания последовательных обработчиков на промежуточные элементы route-дерева, но... этот обработчик будет выполнен только до обработчика конечного узла, то есть «листа». Мне же нужно, чтобы и после обработчика «листа» тоже что-то запускалось - а именно запись в кеш полученных живых данных и времени их получения.

Мне очень не хочется выносить хоть какую-то общую абсолютно для всех URL'ов логику в каждый «конкретный» обработчик, мне кажется, что в обработчике для URL'а нужно оставить только его собственную узкоспецифичную логику.

В общем... буду рад конструктивным идеям по реализации желаемого, а именно общей для всех URL'ов пред и постообработки, на базе Mojolicious (желательно Lite-версии).

Спасибо!

★★★★★

Ответ на: комментарий от outtaspace

Похоже, это то, что доктор прописал! Спасибо!

А в полноценном Mojo можно как-то обрабатывать get'ы и post'ы не «методами контроллера», но анонимными функциями, как в lite?

DRVTiny ★★★★★ ()
Ответ на: комментарий от DRVTiny

С целью, что это универсальный интерфейс для таких «хуков», как ты описываешь, без привязки к mojo.

annulen ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.