

# API Gateway에서 REST API 내보내기
<a name="api-gateway-export-api"></a>

 API Gateway 콘솔을 사용하거나 달리 API Gateway에서 REST API를 생성 및 구성한 경우, Amazon API Gateway Control Service의 일부인 API Gateway API 내보내기를 사용하여 이를 OpenAPI 파일로 내보낼 수 있습니다. API Gateway 내보내기 API를 사용하려면 API 요청에 서명해야 합니다. 요청 서명에 대한 자세한 내용은 **IAM 사용 설명서의 [AWS API 요청에 서명](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html)을 참조하세요. [Postman](https://www.postman.com) 확장뿐만 아니라 API Gateway 통합 확장도 내보낸 OpenAPI 정의 파일에 포함시킬 수 있습니다.

**참고**  
AWS CLI를 사용하여 API를 내보낼 경우 다음 예와 같이 확장 파라미터를 포함시켜서 `x-amazon-apigateway-request-validator` 확장이 포함되도록 하세요.  

```
aws apigateway get-export --parameters extensions='apigateway' --rest-api-id abcdefg123 --stage-name dev --export-type swagger latestswagger2.json
```

 페이로드가 `application/json` 유형이 아닐 경우 API를 내보낼 수 없습니다. 내보내기를 시도하면 JSON 본문 모델이 없다는 오류 응답을 받게 됩니다.

## REST API 내보내기 요청
<a name="api-gateway-export-api-request"></a>

 내보내기 API를 사용하여 GET 요청을 제출하고 내보낼 API를 URL 경로의 일부로 지정하여 기존 REST API를 내보내세요. 요청 URL의 형식은 다음과 같습니다.

------
#### [ OpenAPI 3.0 ]

```
 https://<host>/restapis/<restapi_id>/stages/<stage_name>/exports/oas30
```

------
#### [ OpenAPI 2.0 ]

```
 https://<host>/restapis/<restapi_id>/stages/<stage_name>/exports/swagger
```

------

 API Gateway 확장(`integration` 값 사용) 또는 Postman 확장을 포함할지(`postman` 값 사용) 지정하는 `extensions` 쿼리 문자열을 추가할 수 있습니다.

 그리고 `Accept` 헤더를 `application/json` 또는 `application/yaml`로 설정하여 API 정의 출력을 각각 JSON 또는 YAML 형식으로 받을 수 있습니다.

 API Gateway 내보내기 API를 사용하여 GET 요청을 제출하는 자세한 내용은 [GetExport](https://docs.aws.amazon.com/apigateway/latest/api/API_GetExport.html)를 참조하세요.

**참고**  
 API에서 모델을 정의한 경우 API Gateway가 모델을 내보내려면 "application/json" 콘텐츠 유형이어야 합니다. 그렇지 않으면 API Gateway에서 "Only found non-JSON body models for ..." 오류 메시지와 함께 예외가 발생합니다.  
 모델은 속성을 포함하거나 특정 JSONSchema 형식으로 정의해야 합니다.

## REST API OpenAPI 정의를 JSON으로 다운로드
<a name="api-gateway-export-api-download-swagger-json"></a>

OpenAPI 정의의 REST API를 JSON 형식으로 내보내고 다운로드하려면

------
#### [ OpenAPI 3.0 ]

```
GET /restapis/<restapi_id>/stages/<stage_name>/exports/oas30
Host: apigateway.<region>.amazonaws.com
Accept: application/json
```

------
#### [ OpenAPI 2.0 ]

```
GET /restapis/<restapi_id>/stages/<stage_name>/exports/swagger
Host: apigateway.<region>.amazonaws.com
Accept: application/json
```

------

 예를 들어, 여기서 `<region>`은 `us-east-1`일 수 있습니다. API Gateway를 사용할 수 있는 전체 리전은 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_region)를 참조하세요.

## REST API OpenAPI 정의를 YAML로 다운로드
<a name="api-gateway-export-api-download-swagger-yaml"></a>

OpenAPI 정의의 REST API를 YAML 형식으로 내보내고 다운로드하려면

------
#### [ OpenAPI 3.0 ]

```
GET /restapis/<restapi_id>/stages/<stage_name>/exports/oas30
Host: apigateway.<region>.amazonaws.com
Accept: application/yaml
```

------
#### [ OpenAPI 2.0 ]

```
GET /restapis/<restapi_id>/stages/<stage_name>/exports/swagger
Host: apigateway.<region>.amazonaws.com
Accept: application/yaml
```

------

## Postman 확장이 포함된 REST API OpenAPI 정의를 JSON으로 다운로드
<a name="api-gateway-export-api-download-swagger-json-with-postman"></a>

OpenAPI 정의의 REST API를 Postman을 사용해 JSON 형식으로 내보내고 다운로드하려면

------
#### [ OpenAPI 3.0 ]

```
GET /restapis/<restapi_id>/stages/<stage_name>/exports/oas30?extensions=postman
Host: apigateway.<region>.amazonaws.com
Accept: application/json
```

------
#### [ OpenAPI 2.0 ]

```
GET /restapis/<restapi_id>/stages/<stage_name>/exports/swagger?extensions=postman
Host: apigateway.<region>.amazonaws.com
Accept: application/json
```

------

## API Gateway 통합이 포함된 REST API OpenAPI 정의를 YAML로 다운로드
<a name="api-gateway-export-api-download-swagger-yaml-with-apig"></a>

OpenAPI 정의의 REST API를 API Gateway 통합을 사용해 YAML 형식으로 내보내고 다운로드하려면

------
#### [ OpenAPI 3.0 ]

```
GET /restapis/<restapi_id>/stages/<stage_name>/exports/oas30?extensions=integrations
Host: apigateway.<region>.amazonaws.com
Accept: application/yaml
```

------
#### [ OpenAPI 2.0 ]

```
GET /restapis/<restapi_id>/stages/<stage_name>/exports/swagger?extensions=integrations
Host: apigateway.<region>.amazonaws.com
Accept: application/yaml
```

------

## API Gateway 콘솔을 사용하여 REST API 내보내기
<a name="api-gateway-export-api-from-console"></a>

[REST API를 단계로 배포](set-up-deployments.md#create-deployment)한 후 API Gateway 콘솔을 사용하여 단계의 API를 OpenAPI 파일로 계속 내보낼 수 있습니다.

 API Gateway 콘솔의 **스테이지** 창에서 **스테이지 작업**, **내보내기**를 선택합니다.

![\[API Gateway 콘솔을 사용하여 REST API 내보내기\]](http://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/images/export-new-console.png)


**API 사양 유형**, **형식** 및 **확장**을 지정하여 API의 OpenAPI 정의를 다운로드합니다.