【问题标题】:GAE dispatch.yaml path rules not workingGAE dispatch.yaml 路径规则不起作用
【发布时间】:2015-11-19 09:36:04
【问题描述】:

我有一个 dispatch.yaml 之类的

application: myapp

dispatch:
  - url: "www.myapp.com/*"
    module: frontend

  - url: "www.myapp.com/api/*"
    module: api

  - url: "foo.myapp.com/*"
    module: foo

foo 路由工作得很好,但对www.myapp.com/api/whatever 的请求被路由到frontend 应用程序。日志证明,我无法获得点击 api 模块的请求。

为什么我的调度规则不起作用?

【问题讨论】:

    标签: google-app-engine routing


    【解决方案1】:

    dispatch.yaml 中的顺序很重要。 GAE 使用第一个匹配的规则。对www.myapp.com/api/whatever 的请求与www.myapp.com/* 通配符匹配,因此frontend 模块用于这些。

    将这些规则的顺序切换为:

    dispatch:
      - url: "www.myapp.com/api/*"
        module: api
    
      - url: "www.myapp.com/*"
        module: frontend
    

    【讨论】:

    • 是的,非常正确。人们(在这种情况下,以及其他 GAE YAML 文件)似乎认为匹配的正则表达式/通配符以某种方式“应该”是“更严格”的,但在人类和程序的一般情况下,这将是极其复杂的——简单地说按顺序进行要简单得多......但用户不断犯这个错误。在可以确保与后面的正则表达式/通配符匹配的任何内容都已经与前一个匹配的情况下,可能进行错误诊断会有所帮助...?
    • @AlexMartelli 或者,如果官方文档实际上规则是按顺序应用的,也许人们不会犯这个错误,例如这个问题中的例子?
    猜你喜欢
    • 2019-01-31
    • 1970-01-01
    • 2019-07-24
    • 2014-11-16
    • 2021-05-01
    • 2016-07-02
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多