gpt4 book ai didi

google-app-engine - dispatch.yaml 的语义

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:59 24 4
gpt4 key购买 nike

我正在查看有关 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 是如何工作的。特别是:

  1. 是否按照给定的顺序应用规则?我假设使用的是第一个匹配规则,但似乎没有任何说法。
  2. 前导 glob(通配符)字符是否只匹配域名,或者它们是否可以匹配 URL 路径的第一部分?如果规则是 */hello,它会匹配 myapp.appspot.com/path/hello 吗?根据文档中的一些模糊提示,我猜不是,但不是很清楚。
  3. 如果 dispatch.yaml 中没有规则匹配 URL,是否会路由到默认服务?我认为它必须如此,但同样,这些页面没有说明。
  4. 在将 URL 发送到服务之前,是否会根据规则对其进行重写?如果规则是 */path/* 并且 URL 是 https://myapp.appspot.com/path/hello,服务会将其视为 /path/hello 还是 /hello?我猜是前者。

我现在正在做一些试验和错误,所以我可能很快就能回答我自己的问题。我还通过他们的文档反馈系统将此提交给 Google。

最佳答案

目前我知道的事情:

  1. 是的,规则是按顺序尝试的。因此,例如,如果您希望一个 URL 转到特定服务,而所有其他 URL 转到另一个服务,您应该首先指定特定的 URL:
dispatch:
- url: "*/specific"
module: specific

- url: "*/*"
module: general

如果以相反的顺序放置这些规则,则永远不会使用模块 specific,因为 URL /specific 将被通配符规则捕获。

  1. 未知

  2. 是的。您可以通过发出不匹配任何 dispatch.yaml 规则的请求并查看 default 的服务日志来对此进行测试。

  3. 没有重写。如果规则是 */path/* 而实际 URL 是 https://myapp.appspot.com/path/hello,你的服务应该仍然处理 /path/hello,而不是 /hello

关于google-app-engine - dispatch.yaml 的语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40312446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com