ルート・パスへのパス・パラメータおよびワイルドカードの追加
APIゲートウェイを使用してAPIデプロイメント仕様のパスをルーティングするためのパス・パラメータおよびワイルドカードの追加方法を確認します。
APIデプロイメント仕様のルート・パス定義の範囲の大小にかかわらずリクエストURLが変わる場合でも、異なるAPIリクエストを同じバックエンドにルーティングする必要がある場合があります。
APIデプロイメント仕様でルート・パスを定義するときには、パスの個別セグメントを正確に置き換えるパス・パラメータを含めることができます。必要に応じて、ルート・パスに複数のパス・パラメータを含めることができます。また、ルート・パス内のパス・パラメータにアスタリスク(*)のワイルドカードを追加すると、同じバックエンドへのリクエストをより柔軟に識別できるようになります。
このトピックの例では、JSONファイル内のAPIデプロイメント仕様にルート・パスを追加することを想定しています。コンソールでダイアログを使用してAPIデプロイメント仕様を定義する場合も、例が適用されます。
例: 類似のURLに一致するパス・パラメータの追加
類似のURLを持つリクエストを同じバックエンドにルーティングする要件を設定できます。例:
- https://<gateway-hostname>/marketing/hello/us/index.html
- https://<gateway-hostname>/marketing/hello/apac/index.html
- https://<gateway-hostname>/marketing/hello/emea/index.html
これらの類似のURLに対するコールを同じバックエンドに解決できるようにするには、APIコール間で異なるルート・パスのセグメントとして中カッコで囲まれたパス・パラメータ名を追加します。たとえば、次に示すように{region}
と入力します:
{
"routes": [
{
"path": "/hello/{region}/index.html",
"methods": ["GET"],
"backend": {
"type": "ORACLE_FUNCTIONS_BACKEND",
"functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
}
}
]
}
パス・パラメータの名前には次の点に注意してください:
- 英数字の大文字と小文字を含めることができます。
- アンダースコア
_
の特殊文字を含めることができます。 - その他の特殊文字を含めることはできません。特に、パス・パラメータ名には、スペース、スラッシュおよび中カッコを含めることはできません。
例: 異なるURLと一致するワイルドカードを含むパス・パラメータの追加
リクエストURLが大きく異なっていても、同じバックエンドにリクエストをルーティングする要件を設定できます。例:
- https://<gateway-hostname>/marketing/hello/us/index.html
- https://<gateway-hostname>/marketing/hello/apac/introduction/
- https://<gateway-hostname>/marketing/hello/emea/welcome.html
- https://<gateway-hostname>/marketing/hello/introduction
- https://<gateway-hostname>/marketing/hello/top.html
- https://<gateway-hostname>/marketing/hello/
このような大きく異なったURLに対するコールを同じバックエンドに解決するには:
- 様々なAPIコール間で異なるルート・パスの最初のセグメントとして、中カッコで囲まれたパス・パラメータ名を追加します
- パス・パラメータ名の末尾にアスタリスク(*)のワイルドカードを追加します
たとえば、次に示すように{generic_welcome*}
と入力します:
{
"routes": [
{
"path": "/hello/{generic_welcome*}",
"methods": ["GET"],
"backend": {
"type": "ORACLE_FUNCTIONS_BACKEND",
"functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
}
}
]
}
アスタリスクのワイルドカードを使用したパス・パラメータ名は、次に一致します:
- パス・セグメントなし
- 単一パス・セグメント
- 複数パス・セグメント