Регулярное выражение App Engine выдает ссылку на скрипт и обработчики - PullRequest
1 голос
/ 28 сентября 2010

Я пытаюсь разбить мое приложение на отдельные сценарии.Часть этих усилий означала разбиение вызовов 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 ]

3 голосов
/ 28 сентября 2010

Шаблоны URL, которые вы используете в приложении WSGI, должны содержать полный путь - например, / api / game / .... Инфраструктура App Engine использует регулярные выражения в app.yaml для маршрутизации запросов, но неизмените путь запроса, основываясь на них.

2 голосов
/ 01 апреля 2011

Полагаю, вы пытаетесь передать некоторые аргументы вашему обработчику.

Попробуйте это.Это даст вам подсказку.

#!/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()

Надеюсь, это поможет.Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...