OpenAPIbasePath プロパティを設定 - Amazon API Gateway

OpenAPIbasePath プロパティを設定

OpenAPI 2.0 では、basePath プロパティを使用して、paths プロパティに定義された各パスに先行する 1 つ以上のパス部分を提供できます。API Gateway にはリソースのパスを表現する複数の方法があるため、API のインポート機能には、インポート中に basePath プロパティを解釈するための次のオプションが用意されています。ignore、prepend、および split です。

OpenAPI 3.0」では、basePath は、最上位のプロパティではありません。代わりに、API Gateway は規則としてサーバー変数を使用します。API のインポート機能には、インポート中に基本パスを解釈するための同じオプションが用意されています。基本パスは次のように識別されます。

  • API に basePath 変数が含まれていない場合、API のインポート機能は server.url 文字列を確認して、"/" 以外のパスが含まれているかどうかを確認します。含まれている場合は、そのパスが基本パスとして使用されます。

  • API に含まれる basePath 変数が 1 つだけの場合、API のインポート機能は server.url で参照されていなくても、それを基本パスとして使用します。

  • API に複数の basePath 変数が含まれている場合、API のインポート機能は最初の変数のみを基本パスとして使用します。

Ignore (無視)

OpenAPI ファイルの basePath の値が /a/b/c で、paths プロパティに /e および /f が含まれる場合に、次の POST または PUT リクエストがあるとします。

POST /restapis?mode=import&basepath=ignore

PUT /restapis/api_id?basepath=ignore

この場合、API で次のリソースが発生します。

  • /

  • /e

  • /f

その効果として、basePath を、これが存在しなかったかのように扱い、宣言された API のすべてのリソースは、ホストに対して相対的に提供されます。これを使用できるのは、たとえば、基本パスを含まない API マッピングや、本番ステージを参照するステージ値を持つカスタムドメイン名がある場合です。

注記

API Gateway は、定義ファイルに明示的に宣言されていない場合でも、自動的にルートリソースを作成します。

指定しない場合、basePath はデフォルトで ignore を受け取ります。

Prepend

OpenAPI ファイルの basePath の値が /a/b/c で、paths プロパティに /e および /f が含まれる場合に、次の POST または PUT リクエストがあるとします。

POST /restapis?mode=import&basepath=prepend

PUT /restapis/api_id?basepath=prepend

この場合、API で次のリソースが発生します。

  • /

  • /a

  • /a/b

  • /a/b/c

  • /a/b/c/e

  • /a/b/c/f

その効果として、(メソッドなしで) 追加のリソースとして basePath を処理し、宣言されたリソースセットに追加します。これを使用できるのは、たとえば、さまざまなチームが API パートの異なる部分を担当し、basePath が各チームの API 部分のパスの場所を参照できる場合です。

注記

API Gateway は、定義に明示的に宣言されていない場合でも、自動的に中間リソースを作成します。

Split

OpenAPI ファイルの basePath の値が /a/b/c で、paths プロパティに /e および /f が含まれる場合に、次の POST または PUT リクエストがあるとします。

POST /restapis?mode=import&basepath=split

PUT /restapis/api_id?basepath=split

この場合、API で次のリソースが発生します。

  • /

  • /b

  • /b/c

  • /b/c/e

  • /b/c/f

その効果として、最上位のパス部分 /a を、各リソースのパスの先頭として扱い、API 内で (メソッドなしで) 追加のリソースを作成します。これを使用できるのは、たとえば、a が、API の一部として公開するステージ名である場合です。