App Engine正则表达式将URL指向脚本和处理程序

时间:2010-09-28 12:18:45

标签: python regex google-app-engine

我正在尝试将我的应用分成不同的脚本。这项工作的一部分意味着将api调用打破到它自己的文件中。然而,对api的调用(如http://example.com/api/game/new不再起作用)。 我的app.yaml包含这个:

- url: /api.*
  script: api.py

似乎正在重定向,因为此配置有效:

def main():
    application = webapp.WSGIApplication([('/.*', TestPage)], debug=True)
    util.run_wsgi_app(application)
然而,这个不是:

def main():
    application = webapp.WSGIApplication([('/game/new$', CreateGame), 
                                          ('/game/(d+)$', GameHandler)],
                                          debug=True)
    util.run_wsgi_app(application)

2 个答案:

答案 0 :(得分:3)

您在WSGI应用程序中使用的URL模式必须是完整路径 - 例如,/ api / game / .... App Engine基础结构使用app.yaml中的正则表达式来路由请求,但它不会根据它们修改请求路径。

答案 1 :(得分:2)

我的猜测是你试图将一些参数传递给你的处理程序。

试试这个。它会给你一个提示。

#!/usr/bin/env python

import wsgiref.handlers
from google.appengine.ext import webapp


class MyHandler(webapp.RequestHandler):
    def get(self, string=None):
        if string:
            self.response.out.write("Hello World!! %s" % string)
        else:
            self.response.out.write("Hello World!! (and no word)")


def main():
    app = webapp.WSGIApplication([
                    (r'/word/(\w+)/?$', MyHandler),
                    (r'.*', MyHandler),
                    ], debug=True)

    wsgiref.handlers.CGIHandler().run(app)


if __name__ == "__main__":
    main()

希望它有所帮助。欢呼声。