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