HTTP 書き換えポリシーは、リクエストをバックエンドサービス に転送する前に、リクエストのパスとホスト名を変更します。これにより、ビジネス要件やアーキテクチャ要件に合わせてルーティングを正確に制御できます。
HTTP 書き換えポリシーの設定
HTTP 書き換えは、元のリクエストのパスとホスト名を変更します。
-
クラウドネイティブ API Gateway には、HTTP 書き換えポリシーを設定する方法が 2 つあります。インスタンス外で管理される API 用と、インスタンス内で管理される API 用です。
インスタンス外の API
-
クラウドネイティブ API Gateway コンソールにログインします。左側のナビゲーションペインで [API] をクリックし、上部メニューからリージョンを選択します。
-
ターゲット API をクリックします。上部にあるすべてのインスタンス ドロップダウンリストから、ターゲットのインスタンスを選択するか、すべてのインスタンスを選択します。
-
Routes タブで、対象のルートを選択します。
インスタンス内の API
-
クラウドネイティブ API ゲートウェイコンソールにログオンします。左側のナビゲーションペインで、インスタンス をクリックし、トップメニューバーからリージョンを選択します。
-
インスタンス ページで、ターゲットゲートウェイインスタンスの ID をクリックします。 左側のナビゲーションペインで [API] をクリックし、ターゲット API をクリックします。
-
Routes タブで、対象のルートを選択します。
-
-
Configure Policy タブをクリックします。 次に、Inbound Processing セクションで、[ポリシー/プラグインの有効化] をクリックします。
-
HTTP Rewrite カードをクリックし、ポリシーの追加: HTTP Rewrite パネルでパラメーターを設定して、Add をクリックします。
パスの書き換え
クラウドネイティブ API Gateway は、プレフィックスの書き換えと正規表現の書き換えの 2 つのパス書き換え方法をサポートしています。
プレフィックスの書き換え
プレフィックスの書き換えは、リクエストのパスプレフィックスを変更します。
例 1
リクエストパスを /app/test から /test に変更してバックエンドサービス に転送するには、次の設定を使用します。
-
ルート一致条件:一致タイプは [前方一致] で、パスは
/app/です。 -
書き換え:書き換えタイプは [プレフィックスの書き換え] で、パスは
/です。
ルート一致条件のパスは /app/ である必要があります。これは、プレフィックスの書き換えがプレフィックス ルールに一致した文字列のみを置き換えるためです。条件のパスが /app に設定されている場合、書き換え後のパスは //test となり、意図した結果にはなりません。
例 2
リクエストパスを /v1/test から /v2/test に変更するには、次の設定を使用します。
-
ルート一致条件:一致タイプは [前方一致] で、パスは
/v1です。 -
書き換え:書き換えタイプは [プレフィックスの書き換え] で、パスは
/v2です。
プレフィックスの書き換えでは、ルートの一致タイプが [前方一致] である必要があります。この書き換えタイプは、[完全一致] または [正規表現一致] を使用するルートではサポートされていません。前方一致はパスプレフィックスを共有するすべてのリクエストに適用されるため、一致するすべてのリクエストを書き換えるべきかどうかを慎重に検討してください。そうでない場合は、正規表現の書き換えの使用を推奨します。
正規表現の書き換え
正規表現の書き換えは、mode パラメーター (一致させる正規表現パターン) と replacement パラメーター (置換文字列) を使用して、リクエストパスの一部を変更します。構文の詳細については、「正規表現の構文」をご参照ください。
例 1
リクエストパスを /aaa/one/bbb/one/ccc から /aaa/two/bbb/two/ccc に変更するには、次の設定を使用します。
-
ルート一致条件:一致タイプは [完全一致] で、パスは
/aaa/one/bbb/one/cccです。 -
書き換え:書き換えタイプは [正規表現の書き換え] で、
modeはone、replacementはtwoです。
例 2
/httpbin/(.*)/(.*) のようなパスから /httpbin プレフィックスを削除し、2 つのキャプチャグループ を入れ替えるには、次の設定を使用します。
-
ルート一致条件:一致タイプは [正規表現一致] で、パスは
/httpbin/(.*)/(.*)です。 -
書き換え:書き換えタイプは [正規表現の書き換え] で、
modeは/httpbin/(.*)/(.*)、replacementは/\2/\1です。この文字列では、\1は正規表現の最初のキャプチャグループ を表し、\2は 2 番目のキャプチャグループ を表します。これは、Nginx で使用される変数 $1 および $2 と同様です。
正規表現の書き換えは、構文が複雑な高度な機能であり、通常は特殊なケースで使用されます。要件を満たす場合は、プレフィックスの書き換えを使用することを推奨します。
ホスト名の書き換え
クラウドネイティブ API Gateway は、完全なホスト名の書き換えをサポートしています。
たとえば、リクエストのホスト名を test.com から dev.com に変更するには、ポリシー設定で書き換え後のホスト名を dev.com に設定します。