Я смотрю на различных страницах о 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, но я думаю, что это будет одинаково для каждого языка и среды.
Проблема в том, что на этих страницах не указано, как работает диспетчер. В частности:
- Применяются ли правила в указанном порядке? Я предполагаю, что первое правило сопоставления используется, но ничего не говорит об этом.
- Соответствуют ли ведущим символам glob (wildcard) только имя домена или соответствуют ли они первой части пути URL? Если правило
*/hello
, это соответствуетmyapp.appspot.com/path/hello
? Я предполагаю, что нет, основываясь на некоторых неопределенных намеках в документах, но это не очень понятно. - Если никакое правило в dispatch.yaml не соответствует URL-адресу, будет ли оно перенаправлено на службу по умолчанию? Я бы подумал, что это нужно, но опять же, эти страницы не говорят.
- Нужно ли переписывать URL-адреса на основе правил до их отправки в службу? Если правило
*/path/*
и URL-адресhttps://myapp.appspot.com/path/hello
, будет ли это вид обслуживания/path/hello
или/hello
? Я догадываюсь о первом.
Теперь я делаю пробную версию и ошибку, поэтому я могу ответить на свой вопрос в ближайшее время. Я также отправляю это в Google через свою систему обратной связи документации.
Дополнительной «вещь, чтобы знать», что нужно развернуть dispatch.yaml намеренно: просто развернуть приложение с помощью CLI по умолчанию Params (т.е. 'glcoud приложение развертывания --project мой-project') развернет app.yaml , cron.yaml, queue.yaml и index.yaml, если они найдены в корне проекта, но не будут развертывать dispatch.yaml. Без развертывания dispatch.yaml все запросы будут продолжать работать в службе 'default'. – hamx0r