ルートについて

このページは Apigee と Apigee ハイブリッドに適用されます。

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

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

ProxyEndpoint と TargetEndpoint の関係については、ルートの概要をご紹介しているこちらの動画をご覧ください。

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"/>

詳細