I'm looking at various pages about dispatch.yaml, most of which contain similar information and examples:
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 etc.
I happen to be using node.js on GAE Flexible Environment, but I think it would be the same for every language and environment.
The problem is that these pages don't really specify how dispatch.yaml works. In particular:
*/hello
, would that match myapp.appspot.com/path/hello
? I'm guessing not, based on some vague hints in the docs, but it isn't very clear.*/path/*
and the URL is https://myapp.appspot.com/path/hello
, will the service see it as /path/hello
or as /hello
? I'm guessing the former.I'm doing some trial and error now, so I may be able to answer my own question soon. I'm also submitting this to Google through their documentation feedback system.
Things I know so far:
dispatch:
- url: "*/specific"
module: specific
- url: "*/*"
module: general
If you put those rules in the opposite order, module specific
will never be used, because the URL /specific
will be caught by the wildcard rule.
Unknown
Yes. You can test this by making a request not matching any dispatch.yaml
rule and watching the default
's service logs.
No rewriting. If the rule is */path/*
and the actual URL is https://myapp.appspot.com/path/hello
, your service should still handle /path/hello
, not /hello
.