

# OpenAPI`basePath` プロパティを設定
<a name="api-gateway-import-api-basePath"></a>

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

「[https://swagger.io/docs/specification/api-host-and-base-path/](https://swagger.io/docs/specification/api-host-and-base-path/)」では、`basePath` は、最上位のプロパティではありません。代わりに、API Gateway は規則として[サーバー変数](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#serverVariableObject)を使用します。API のインポート機能には、インポート中に基本パスを解釈するための同じオプションが用意されています。基本パスは次のように識別されます。
+ API に `basePath` 変数が含まれていない場合、API のインポート機能は `server.url` 文字列を確認して、`"/"` 以外のパスが含まれているかどうかを確認します。含まれている場合は、そのパスが基本パスとして使用されます。
+ API に含まれる `basePath` 変数が 1 つだけの場合、API のインポート機能は `server.url` で参照されていなくても、それを基本パスとして使用します。
+ API に複数の `basePath` 変数が含まれている場合、API のインポート機能は最初の変数のみを基本パスとして使用します。

## Ignore (無視)
<a name="api-gateway-import-api-basePath-ignore"></a>

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
<a name="api-gateway-import-api-basePath-prepend"></a>

 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
<a name="api-gateway-import-api-basePath-split"></a>

 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 の一部として公開するステージ名である場合です。