如何根据查询参数匹配app.yaml中的网址?

时间:2014-11-27 15:08:08

标签: google-app-engine app.yaml

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

现在,我想支持Google的ajax抓取协议,这意味着我必须在以/app开头并以?_escaped_fragment=结尾的任何网址上返回HTML快照。

我有这两个处理程序:

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

- url: /app(/.*)?
  static_files: static/pages/app.html
  upload: static/pages/app\.html

/app?_escaped_fragment=的请求仍然会路由到静态页面。有没有办法匹配查询参数?

我知道我可以将/app(/.*)?路由到返回静态页面的脚本或基于查询参数存在的快照,但是提供静态文件要便宜得多,所以我可以比如只有带有查询参数的请求才能点击我的应用服务器。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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