У меня есть URL-маршрут в моем приложении web.py, который я хочу запустить, чтобы перехватить все URL-адреса, попадающие на сервер, но только после того, как будут обработаны любые статические ресурсы.
Например, если в моем каталоге static
есть js/test.js, путь http://a.com/js/tests.js
должен возвращать содержимое файла. Но у меня также настроена маршрутизация URL-адресов, так что есть регулярное выражение, которое улавливает все следующим образом:
urls = ('/.*', 'CatchAllHandler')
Таким образом, это должно работать только, если статический ресурс не обнаружен. Запрос на http://a.com/js/test.js
должен возвращать статический файл test.js
, а запрос на http://a.com/js/nope.js
должен проходить через файл CatchAllHandler
.
Я пытался написать для этого свой собственный StaticMiddleware, но это поможет только в том случае, если порядок операций web.py будет изменен. В настоящее время промежуточное ПО выполняется после обработки URL-маршрутов. Мне нужно, чтобы промежуточное ПО запускалось первым, а маршрутизация URL-адресов очищала запросы, которые не обслуживались статическими активами.
У меня есть одна идея — использовать функцию notfound() в качестве обработчика всех событий, но это может быть не лучшим решением.