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
.
Just to fill in the blank (feel free to paste this into the accepted answer):
I created two apps with the following resources:
default -> /abc/def/test.html -> <h1>default</h1>
other -> /abc/def/test.html -> <h1>other</h1>
And 1 route:
<dispatch>
<url>*/def/*</url>
<module>other</module>
</dispatch>
When I hit {app engine}/abc/def/test.html
I got "default"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With