

# 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` 속성에 정의된 각 경로 앞에 하나 이상의 경로 파트를 제공할 수 있습니다. API Gateway에 리소스 경로를 표시할 여러 방법이 있기 때문에 Import API 기능은 가져오기 과정에서 `basePath` 속성을 해석하기 위한 옵션(무시, 앞에 추가, 분할)을 제공합니다.

[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)를 규칙으로 사용합니다. Import API 기능은 가져오기 중에 기본 경로를 해석하기 위한 동일한 옵션을 제공합니다. 기본 경로는 다음과 같이 식별됩니다.
+ API에 `basePath` 변수가 없을 경우 Import API 기능은 `server.url` 문자열을 확인하여 `"/"` 위의 경로를 포함하는지 확인합니다. 포함할 경우 이 경로가 기본 경로로 사용됩니다.
+ API에 `basePath` 변수가 한 개만 있을 경우 Import API 기능은 `server.url`에 참조되지 않았더라도 이 변수를 기본 경로로 사용합니다.
+ API에 `basePath` 변수가 여러 개 있을 경우 Import 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 리소스가 호스트를 기준으로 제공됩니다. 예를 들어, 프로덕션 단계를 참조하는 *Base Path* 및 *Stage* 값을 포함하지 않는 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는 정의에 명시적으로 선언되지 않은 경우에도 자동으로 중간 리소스를 생성합니다.

## 분할
<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 일부로 공개할 단계 이름인 경우 이 옵션을 사용할 수 있습니다.