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