このページは Apigee と Apigee ハイブリッドに適用されます。
Apigee Edge のドキュメントを表示する。
ルートにより、ProxyEndpoint から TargetEndpoint へのリクエストのパスが決定されます。ルートに含まれているのは、API ProxyEndpoint と、TargetEndpoint で定義されたバックエンド サービスの URL にアクセスするために使用される URL です。
ProxyEndpoint と TargetEndpoint の関係については、ルートの概要をご紹介しているこちらの動画をご覧ください。
API プロキシ エンドポイントの URL の指定
次の図は、アプリから ProxyEndpoint に送信され、バックエンド サービスに転送されるリクエストを示しています。

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