2016-10-28 4 views
4

Я смотрю на различных страницах о dispatch.yaml, большинство из которых содержат подобную информацию и примеры:Семантика 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 т.д.

я, случается, используя node.js на гибкой среде GAE, но я думаю, что это будет одинаково для каждого языка и среды.

Проблема в том, что на этих страницах не указано, как работает диспетчер. В частности:

  1. Применяются ли правила в указанном порядке? Я предполагаю, что первое правило сопоставления используется, но ничего не говорит об этом.
  2. Соответствуют ли ведущим символам glob (wildcard) только имя домена или соответствуют ли они первой части пути 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 через свою систему обратной связи документации.

ответ

2

Вещи, которые я знаю, до сих пор:

  1. Да, правила пытались в порядке. Так, например, если вы хотите один URL, чтобы перейти к конкретной услуге, а также всем другим URL, чтобы перейти на другую службу, вы должны указать конкретную один первый: `` ` доставка:

    • URL: "*/конкретный" модуль: специфический

    • URL: "/" модуль: общий `` ` Если поместить эти правила в обратном порядке, никогда не будет использоваться модуль specific, так как URL /specific будет рыдать t подстановочным правилом.

  2. Неизвестный

  3. Да. Вы можете проверить это, сделав запрос, не соответствующий правилу dispatch.yaml, и просмотрите журналы обслуживания default.

  4. Нет переписывания. Если правило */path/*, а фактический URL-адрес https://myapp.appspot.com/path/hello, ваша служба все равно должна обрабатывать /path/hello, а не /hello.

+0

Дополнительной «вещь, чтобы знать», что нужно развернуть dispatch.yaml намеренно: просто развернуть приложение с помощью CLI по умолчанию Params (т.е. 'glcoud приложение развертывания --project мой-project') развернет app.yaml , cron.yaml, queue.yaml и index.yaml, если они найдены в корне проекта, но не будут развертывать dispatch.yaml. Без развертывания dispatch.yaml все запросы будут продолжать работать в службе 'default'. – hamx0r

Смежные вопросы