次の方法で共有


URL の書き換え

適用対象: すべての 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

使用法

使用上の注意

クエリ文字列のパラメータはポリシーを使うことでのみ追加できます。 書き換えた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>

ポリシーに対する処理の詳細については、次のトピックを参照してください。