適用対象: すべての API Management レベル
rewrite-uriポリシーは、リクエストURLを公開形式からウェブサービスが期待する形式に変換します。
このポリシーは、人間やブラウザに優しいURLをウェブサービスが期待するURL形式に変換する必要がある場合にご利用ください。 このポリシーは、クリーンなURL、RESTful URL、ユーザーフレンドリーなURL、または純粋に構造的でクエリ文字列を含まず、リソースの経路(スキームと権威の後)のみを含むSEOに適したURLなど、代替URL形式を公開する場合のみ適用してください。 この変更は見た目や使いやすさ、検索エンジン最適化(SEO)の目的で行われることが多いです。
注
ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 API Management ポリシーを設定または編集する方法について説明します。
ポリシー ステートメント
<rewrite-uri template="uri template" copy-unmatched-params="true | false" />
属性
| 名前 | 説明 | 必要 | 既定値 |
|---|---|---|---|
| テンプレート | クエリ文字列パラメーターを設定した実際の Web サービス URL。 ポリシー式を使用できます。 式を使用するときは、値全体が式である必要があります。 | はい | 該当なし |
| copy-unmatched-params | 元のURLテンプレートに存在しないクエリパラメータが、書き換えテンプレートで定義されたURLに追加されるかどうかを指定します。 ポリシー式を使用できます。 | いいえ | true |
使用法
- ポリシー セクション: inbound
- ポリシー スコープ: グローバル、ワークスペース、製品、API、操作
- ゲートウェイ: クラシック、v2、従量課金、セルフホステッド、ワークスペース
使用上の注意
クエリ文字列のパラメータはポリシーを使うことでのみ追加できます。 書き換えたURLに追加のテンプレートパスパラメータを追加することはできません。
例示
例1:基本的なURL書き換え
以下の例では、公開URLがバックエンドのサービスURL形式に合わせて書き換えられ、クエリパラメータは他の論理に基づいて含められています。
パブリック URL -
http://api.example.com/storenumber/ordernumber要求 URL -
http://api.example.com/v2/US/hardware/storenumber/ordernumber?City&State
<policies>
<inbound>
<base />
<rewrite-uri template="/v2/US/hardware/{storenumber}/{ordernumber}?City=city&State=state" />
</inbound>
<outbound>
<base />
</outbound>
</policies>
例2:マッチしないパラメータをコピーする
以下の例では、公開URLがバックエンドのサービスURL形式に合わせて書き換えられ、ポリシーはマッチしていないクエリパラメータを新しいURLにコピーします。
<!-- Assuming incoming request is /get?a=b&c=d and operation template is set to /get?a={b} -->
<policies>
<inbound>
<base />
<rewrite-uri template="/put" />
</inbound>
<outbound>
<base />
</outbound>
</policies>
<!-- Resulting URL will be /put?c=d -->
例3:マッチしないパラメータをコピーしないでください
以下の例では、パブリックURLがバックエンドのサービスURL形式に合わせて書き換えられ、ポリシーはマッチしないクエリパラメータを除外します。
<!-- Assuming incoming request is /get?a=b&c=d and operation template is set to /get?a={b} -->
<policies>
<inbound>
<base />
<rewrite-uri template="/put" copy-unmatched-params="false" />
</inbound>
<outbound>
<base />
</outbound>
</policies>
<!-- Resulting URL will be /put -->
例4:テンプレート内でポリシー表現を使う
以下の例では、ポリシーはテンプレート内の式を使ってバックエンドへのリクエストを構築します。
<policies>
<inbound>
<base />
<set-variable name="apiVersion" value="/v3" />
<rewrite-uri template="@("/api" + context.Variables["apiVersion"] + context.Request.Url.Path)" />
</inbound>
</policies>
関連ポリシー
関連するコンテンツ
ポリシーに対する処理の詳細については、次のトピックを参照してください。