在WSGI应用中将URL模式映射到单个请求处理器
有没有办法把一个网址的格式(比如正则表达式或者其他方式)映射到一个请求处理器上?如果可以的话,我该怎么做呢?
我希望能像这样做:
application=WSGIApplication([('/*',MyRequestHandler),])
这样的话,MyRequestHandler 就可以处理所有的请求。需要注意的是,我正在做一个概念验证的应用,所以我并不知道会有哪些网址会访问这个域名。另外,我是在 Google App Engine 上进行这个操作,不知道这是否重要。
2 个回答
8
你说的这种模式是可以正常工作的。而且,你在正则表达式中定义的任何分组都会作为参数传递给处理方法(比如 get、post 等)。举个例子:
class MyRequestHandler(webapp.RequestHandler):
def get(self, date, id):
# Do stuff. Note that date and id are both strings, even if the groups are numeric.
application = WSGIApplication([('/(\d{4}-\d{2}-\d{2})/(\d+)', MyRequestHandler)])
在上面的例子中,两个分组(一个日期和一个 ID)被提取出来,并作为参数传递给你的处理函数。
1
application=WSGIApplication([(r'.*',MyRequestHandler),])
想了解更多内容,可以查看AppEngine的文档