我正在查看有关dispatch.yaml的各个页面,其中大部分都包含类似的信息和示例:
https://cloud.google.com/appengine/docs/flexible/nodejs/how-requests-are-routed#routing_with_a_dispatch_file https://cloud.google.com/appengine/docs/python/config/dispatchref https://cloud.google.com/appengine/docs/go/config/dispatchref 等
我碰巧在GAE Flexible Environment上使用node.js,但我认为对于每种语言和环境都是一样的。
问题是这些页面并没有真正指定dispatch.yaml的工作原理。特别是:
*/hello
,那么匹配myapp.appspot.com/path/hello
吗?根据文档中的一些模糊提示,我猜不到,但它并不是很清楚。*/path/*
且网址为https://myapp.appspot.com/path/hello
,服务会将其视为/path/hello
还是/hello
?我猜这个前者。我现在正在做一些试验和错误,所以我很快就能回答我自己的问题。我也是通过他们的文档反馈系统将此内容提交给Google。
答案 0 :(得分:3)
到目前为止我所知道的事情:
是的,规则是按顺序尝试的。例如,如果您希望一个URL转到特定服务,而所有其他URL转到另一个服务,则应首先指定特定的URL: ``` 调度:
网址:" * /具体" 模块:具体
网址:" / "
模块:一般
```
如果您以相反的顺序放置这些规则,则永远不会使用模块specific
,因为通配符规则将捕获URL /specific
。
未知
是。您可以通过提出与任何dispatch.yaml
规则不匹配的请求并观看default
的服务日志来对此进行测试。
不重写。如果规则为*/path/*
且实际网址为https://myapp.appspot.com/path/hello
,则您的服务仍应处理/path/hello
,而不是/hello
。
答案 1 :(得分:0)
只需填写空白(随时将其粘贴到接受的答案中即可):
我使用以下资源创建了两个应用程序:
default -> /abc/def/test.html -> <h1>default</h1>
other -> /abc/def/test.html -> <h1>other</h1>
和1条路线:
<dispatch>
<url>*/def/*</url>
<module>other</module>
</dispatch>
当我按下{app engine}/abc/def/test.html
时,我得到了“默认”