App Engine正则表达式问题引导URL到脚本和处理程序
我正在尝试把我的应用程序拆分成几个独立的脚本。这个过程的一部分是把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 个回答
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()
希望这能帮到你。加油!
3
在WSGI应用中,你使用的URL模式必须是完整的路径,比如说 /api/game/...。App Engine的基础设施会在app.yaml文件中使用正则表达式来处理请求的路由,但它不会根据这些正则表达式来修改请求的路径。