我的web.py应用程序中有一个URL路由,我想运行它来捕获所有到达服务器的URL,但只有在提供任何静态资产之后。如何在web.py中的StaticMiddleware之后执行URL路由
例如,如果theres是我的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()函数作为我抓住所有处理程序,但这可能不是最好的。
我最终这样做了,但这不是我想要的修复。我想知道在URL路由执行之前是否有办法让任何中间件针对请求执行。这样,无论哪个url托管静态文件都无关紧要。 – 2012-01-15 02:11:45