我正在尝试将我的应用分成不同的脚本。这项工作的一部分意味着将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)
答案 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()
希望它有所帮助。欢呼声。