Google app engine 如何根据查询参数匹配app.yaml中的URL?

Google app engine 如何根据查询参数匹配app.yaml中的URL?,google-app-engine,app.yaml,Google App Engine,App.yaml,我当前将路径以/app开头的任何请求路由到一个静态文件,该文件使用Javascript进行路由 现在,我想支持Google的ajax爬行协议,这意味着我必须在任何以/app开头并以结尾的url上返回HTML快照 我有两个处理程序: - url: /app\?_escaped_fragment= script: main.app - url: /app(/.*)? static_files: static/pages/app.html upload: static/pages/app

我当前将路径以
/app
开头的任何请求路由到一个静态文件,该文件使用Javascript进行路由

现在,我想支持Google的ajax爬行协议,这意味着我必须在任何以
/app
开头并以
结尾的url上返回HTML快照

我有两个处理程序:

- url: /app\?_escaped_fragment=
  script: main.app

- url: /app(/.*)?
  static_files: static/pages/app.html
  upload: static/pages/app\.html
但是对
/app?\u转义\u fragment=
的请求仍然被路由到静态页面。有没有办法匹配查询参数


我知道我可以将
/app(/.*)
路由到一个脚本,该脚本根据查询参数的存在返回静态页面或快照,但是提供静态文件要便宜得多,所以我只希望带有查询参数的请求能够访问我的应用服务器。

这不是你在app.yaml中会做的事情。这些请求仍然应该路由到您的处理程序,在那里他们可以检查请求参数,并根据需要返回JSON或HTML。

如果您阅读规范,则处理程序部分仅用于路径上的REGEXP匹配,而不是查询参数。如果使用RESTful原则设计应用程序,则可以轻松地将查询参数访问转换为基于URI的访问。只需基于
/app/escaped_fragment/*
进行路由,并在处理程序函数中检查路径的其余部分,以查找正在请求的类型为escaped_fragment的特定资源。

在这种情况下,我发现很奇怪,我可以基于路径进行路由,但不能查询app.yaml中的参数。谢谢您的回答。我想那我就得写剧本了。我很想回复对/app/*/\u-escape\u-fragment\u的请求,但这行不通,因为谷歌想向
?\u-escape\u-fragment=
发送请求。啊,对不起,我错过了你的用例本身,多么尴尬。。。是的,如果不能通过查询参数控制请求的执行,则必须在每个处理程序中包含一个控制流分支。我建议用一个函数扩展webapp2.RequestHandler来响应这个特殊的请求模式,通过该类对所有处理程序进行子类化,并在每个doGet\doPost函数的顶部,调用您定义的超类的成员函数,该超类负责检查这一点。