ルートについて

このページの内容は 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"/>

詳細