Send Docs Feedback

Note: Most user interface tasks can be performed in Edge Classic or the New Edge experience. For an overview, getting started topics, and release notes specific to the New Edge experience, see the docs.

ルートについて

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

Watch this video for an introduction to routes, describing the relationship between the ProxyEndpoint and the TargetEndpoint.

API プロキシのエンドポイントの URL の決定

次の図に、アプリから ProxyEndpoint に到着し、バックエンドサービスに転送されるリクエストを示します。 

Edge で API プロキシを作成した後、アプリがプロキシにアクセスするために使用するデフォルトの URL の形式は次のとおりです。

http://{org-name}-{env-name}.apigee.net/{base-path}/{resource-path}

https://{org-name}-{env-name}.apigee.net/{base-path}/{resource-path}

プレースホルダ:

  • {org-name} は組織名です。Edge でアカウントを作成すると、この名前が作成されます。 
  • {env-name} は Edge 環境の名前です。デフォルトでは、クラウドで作成されたすべての Apigee 組織には 2 つ​​の環境 (environment)「test」と「prod」がプロビジョニングされています。API プロキシを展開しているときに、一方または両方の環境に API プロキシを展開することができます。
  • {base-path} および {resource-path} は、API プロキシを作成するときに定義されます。

リクエストが到着すると、Edge ではURL を解析して正しい ProxyEndpoint にリクエストを転送します。例えば、Edge の API プロキシにアクセスするためには、次の URL が使用されます。

http://myOrg-prod.apigee.net/v1/weather/forecastrss

上の図の API プロキシの ProxyEndpoint の定義を調べると、Edge によるこの URL の解析方法を確認できます。

  1. URL のドメイン部分の http://myOrg-prod.apigee.net は、Edge 上の仮想ホストに相当します。 上記の ProxyEndpoint の定義では、API プロキシは <VirtualHost> タグを使用して、default という名前の仮想ホストを参照します。環境には定義されている仮想ホストを複数含むことができます。

    仮想ホストでは、API プロキシが公開されているドメインおよびポートが定義されます。また、仮想ホストでは、API プロキシが HTTP プロトコルと暗号化 HTTPS プロトコルのどちらを使用してアクセスされるかが定義されます。仮想ホストの詳細については、「仮想ホスト」を参照してください。
  2. URL の 2 番目の部分の /v1/weather は、ProxyEndpoint の <BasePath> 要素で決定されます。2 つの API プロキシが同じベースパスを持つことがないよう、ベースパスは環境の API プロキシに対して一意である必要があります。
  3. URL の 3 番目の部分の /forecastrss は、<Flows> タグで定義される対応する条件フローを使用して API プロキシによって定義されたリソースです。

ターゲットエンドポイントの URL の決定

ProxyEndpoint 定義の<RouteRule> タグにより API プロキシのターゲットが決定されます。このタグは、ProxyEndpoint のプレフロー、条件フロー、およびポストフローのすべてのポリシーが処理された後に評価されます。

ProxyEndpoint ではターゲットを以下として定義できます。

  • バックエンドサービスへのダイレクト URL。
  • 単一の TargetEndpoint の定義。
  • API プロキシにより条件に基づいてターゲットエンドポイントへのリクエストが委任される複数の TargetEndpoints。
  • null ルートまたはターゲット。リクエストがターゲットに転送されないことを意味します。転送されるのではなく、リクエストのすべての処理とレスポンスの生成が Edge で実行されます。

ダイレクト URL

ProxyEndpoint では、指定された TargetEndpoint 構成を一切使用することなく、バックエンドサービスを直接呼び出すことができます。例えば、次の <RouteRule> では常に http://api.mycompany.com/myAPI への HTTP 呼び出しを行います。

<RouteRule name="default">
  <URL>http://api.mycompany.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 に米国、英国などの地理的領域が含まれる場合があります。この場合は、地域に基づいてターゲットエンドポイントへのリクエストをルーティングできます。

次のルートルールでは、リクエストの 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 ではルールは上から下の順に評価されるため、デフォルトのルートルールは条件付きのルートのリストの最後に定義されていることを確認してください。

順序は重要です: ProxyEndpoint に複数の RouteRule がある場合、XML 構成の順序は重要です。最初の「照合」するための RouteRule が実行されます (条件のない RouteRule は常に一致します)。前の例で、無条件の「既定」の RouteRule が最初に来る場合、「MyRoute」ルールの条件が一致している場合も実行されます。そのため、条件付きの RouteRule は無条件の RouteRule の前にリストしてください。 

null ルート

null ルートは、リクエストメッセージを TargetEndpoint に転送する必要のないシナリオに対応しています。JavaScript を使用して外部サービスを呼び出すなど、ProxyEndpoint で必要なすべての処理を実行する場合に役立ちます。

次の例では、null ルートが定義されています。

<RouteRule name="GoNowhere"/>

参考資料

Help or comments?