7

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 フレキシブル環境で node.js を使用していますが、どの言語や環境でも同じだと思います。

問題は、これらのページが実際には dispatch.yaml の動作を指定していないことです。特に:

  1. ルールは指定された順序で適用されますか? 最初に一致するルールが使用されていると想定していますが、そうは言っていないようです。
  2. 先頭のグロブ (ワイルドカード) 文字はドメイン名のみに一致しますか? それとも 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 にも送信しています。

4

2 に答える 2

7

私がこれまでに知っていること:

  1. はい、ルールは順番に試行されます。たとえば、ある URL を特定のサービスに移動させ、他のすべての URL を別のサービスに移動させたい場合は、最初に特定の URL を指定する必要があります。
dispatch:
  - url: "*/specific"
    module: specific

  - url: "*/*"
    module: general

これらのルールを逆の順序で配置すると、URLがワイルドカード ルールによって捕捉されるため、モジュールspecificは使用されません。/specific

  1. わからない

  2. はい。dispatch.yamlこれは、どのルールとも一致しないリクエストを作成し、defaultのサービス ログを確認することでテストできます。

  3. 書き換えなし。ルールが*/path/*で実際の URL が のhttps://myapp.appspot.com/path/hello場合、サービスは/path/helloではなくを処理する必要があります/hello

于 2016-12-01T18:51:22.383 に答える