Собственно, для реализации единой логики кеширования хочу сделать некий «хук», позволяющий делать пред и постобработку запросов к API.
Общий для всех URL'ов предобработчик должен посмотреть, не закончилось ли для данного /target'а время кеширования результата запроса с момента последнего получения «живых данных» и, если ещё нужно кешировать - он должен просто вернуть данные из кеша, завершив всю обработку.
Обработчики для конкретных URL'ов (например, для «/weatherinfo» или «/currency») - должны получить свежие, «живые» данные, поскольку предобработчик не завершил цикл, а значит - данные в кеше протухли
Постобработчик, единый для всех URL'ов, должен записывать полученные обработчиком для конкретного URL'а «живые данные» в кеш (в Redis, если на то пошло) и обновлять метку времени последнего получения «живых данных» для данного URL.
Перечитал по диагонали пока документацию по Mojolicious::Lite - ничего подобного не нашёл. Может, плохо смотрел.
Для Mojolicious есть какой-то хитрый вариант навешивания последовательных обработчиков на промежуточные элементы route-дерева, но... этот обработчик будет выполнен только до обработчика конечного узла, то есть «листа». Мне же нужно, чтобы и после обработчика «листа» тоже что-то запускалось - а именно запись в кеш полученных живых данных и времени их получения.
Мне очень не хочется выносить хоть какую-то общую абсолютно для всех URL'ов логику в каждый «конкретный» обработчик, мне кажется, что в обработчике для URL'а нужно оставить только его собственную узкоспецифичную логику.
В общем... буду рад конструктивным идеям по реализации желаемого, а именно общей для всех URL'ов пред и постообработки, на базе Mojolicious (желательно Lite-версии).
Спасибо!