ルートについて

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示する。

ルートにより、ProxyEndpoint から TargetEndpoint へのリクエストのパスが決定されます。ルートに含まれているのは、API ProxyEndpoint と、TargetEndpoint で定義されたバックエンド サービスの URL にアクセスするために使用される URL です。

ProxyEndpointTargetEndpoint の関係を説明するルートの動画をご覧ください。

API プロキシ エンドポイントの URL の指定

次の図は、アプリから ProxyEndpoint に送信され、バックエンド サービスに転送されるリクエストを示しています。

HTTP クライアント リクエストは Apigee で API プロキシを介して HTTP サービスに送られ、レスポンスは API プロキシを介してクライアントに戻されます。

Apigee で API プロキシを作成すると、アプリでプロキシにアクセスするために使用するデフォルトの URL の形式が次のようになります。

https://www.example.com/shopping/cart/addItem
        |_____________| |___________| |_____|
               |             |           |
            hostname      basepath     resource

ここで

  • ホスト名は、DNS に追加したドメインまたは IP アドレスのいずれかです。
  • ベースパスとリソースパスは、API プロキシの作成時に定義されます。

リクエストが Apigee に到着すると、Apigee が URL を解析して、リクエストを正しい ProxyEndpoint に転送します。たとえば、API プロキシへのアクセスには次の URL が使用されます。

http://example.com/v1/weather/forecastrss

上の図で API プロキシの ProxyEndpoint 定義を調べると、この URL の解析方法を確認できます。

  1. URL のドメイン部分 http://example.com は、環境グループで定義されたホスト名に対応します。プロキシは、その環境グループ内の 1 つ以上の環境にデプロイされました。詳細については、環境と環境グループについてをご覧ください。
  2. URL の 2 番目の部分である /v1/weather は、ProxyEndpoint<BasePath> 要素によって決まります。プロキシの作成時にベースパスを定義しました。同じ環境内の 2 つの API プロキシのベースパスが重複しないように、ベースパスは環境の API プロキシに固有のものである必要があります。
  3. URL の 3 番目の部分である /forecastrss は、対応する条件フローが <Flows> 要素により定義された API プロキシによって定義されるリソースです。

動画: API プロキシ エンドポイントについて詳しく説明している短い動画をご覧ください。

ターゲット エンドポイントの URL の指定

ProxyEndpoint 定義の <RouteRule> 要素によって API プロキシのターゲットが決定され、ProxyEndpoint リクエストの PreFlow、条件付きフロー、PostFlow のすべてのポリシーが評価されます。

ProxyEndpoint では、次のようにターゲットを定義できます。

  • バックエンド サービスへのダイレクト URL。
  • 1 つの TargetEndpoint 定義。
  • 条件に基づいて、API プロキシがリクエストをターゲット エンドポイントに委任する複数の TargetEndpoint
  • リクエストがターゲットに転送されないことを意味する null ルートまたは null ターゲット。代わりに、すべてのリクエストの処理とレスポンスの生成は Apigee で行われます。

動画: ターゲット エンドポイントについて詳しく説明している短い動画をご覧ください。

ダイレクト URL

ProxyEndpoint は、指定された TargetEndpoint 構成を迂回して、バックエンド サービスを直接呼び出すことができます。たとえば、次の <RouteRule> は、必ず http://example.com/myAPI: に対する HTTP 呼び出しを実行します。

<RouteRule name="default">
  <URL>http://example.com/myAPI</URL>
</RouteRule>

ただし、TargetEndpoint が存在しないため、ポリシーを ProxyEndpoint で定義されたフローにのみ追加できます。

単一のターゲット

単一ターゲットの定義では、上の図に示すように、ProxyEndpoint が単一の TargetEndpoint 定義を名前によって参照します。

<RouteRule name="default">
  <TargetEndpoint>default</TargetEndpoint>
</RouteRule>

この API プロキシへのすべてのリクエストが同じ TargetEndpoint 定義に転送されます。TargetEndpoint<URL> タグによって、バックエンド サービスのロケーションが決まります。上の例では、ターゲット URL は http://weather.yahooapis.com です。

条件付きターゲット

<RouteRule> タグを使用すると、条件に基づいてターゲットにリクエストを転送できます。フロー変数、クエリ パラメータ、HTTP ヘッダー、メッセージ コンテンツ、またはコンテキスト情報(時間帯およびロケールなど)を使用して、ターゲット エンドポイントを決定できます。たとえば、リクエスト URL に US や UK などの地域を含めることができます。これにより、地域に基づいてリクエストをターゲット エンドポイントにルーティングできます。

次のルートルールは、リクエストの HTTP ヘッダーを評価します。HTTP ヘッダー routeTo の値が TargetEndpoint1 の場合、リクエストは TargetEndpoint1 という名前の TargetEndpoint に転送されます。そうでない場合、リクエストは TargetEndpoint2 に転送されます。

<RouteRule name="MyRoute">
  <Condition>request.header.routeTo = "TargetEndpoint1"</Condition>
  <TargetEndpoint>TargetEndpoint1</TargetEndpoint>
</RouteRule>
<RouteRule name="default">
  <TargetEndpoint>TargetEndpoint2</TargetEndpoint>
</RouteRule>

複数のルートルールがある場合は、1 つを デフォルト、つまり、条件なしのルートルールとして作成します。ProxyEndpoint ではルールが上から下への順に評価されるため、デフォルトのルートルールが条件付きルートのリストの最後に定義されていることを確認してください。

条件ルート条件リファレンスもご覧ください。

動画: 条件付きターゲットを使用してターゲット エンドポイントにルーティングする方法を説明している短い動画をご覧ください。

null ルート

null ルートでは、リクエスト メッセージを TargetEndpoint に転送する必要がないシナリオがサポートされます。これは、ProxyEndpoint が JavaScript を使用して外部サービスを呼び出すなど、必要なすべての処理を行う場合に便利です。

次の例では、null ルートを定義します。

<RouteRule name="GoNowhere"/>

詳細