

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 從 API Gateway 匯出 REST API
<a name="api-gateway-export-api"></a>

 一旦您使用 API Gateway 主控台或其他方式，在 API Gateway 中建立並配置 REST API，就可以使用 API Gateway Export API (屬於 Amazon API Gateway 控制服務的一部分) 將其匯出至 OpenAPI 檔案。若要使用 API Gateway Export API，您必須簽署 API 請求。如需簽署請求的詳細資訊，請參閱《*IAM 使用者指南*》中的[簽署 AWS API 請求](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html)。您可以選擇在匯出的 OpenAPI 定義檔中包含 API Gateway 整合延伸項目和 [Postman](https://www.postman.com) 延伸項目。

**注意**  
使用 匯出 API 時 AWS CLI，請務必包含延伸項目參數，如下列範例所示，以確保包含`x-amazon-apigateway-request-validator`延伸項目：  

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

 如果 API 的承載類型不是 `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
```

------

 您可以附加 `extensions` 查詢字串，以指定要包含 API Gateway 延伸 (具有 `integration` 值) 或是 Postman 延伸 (具有 `postman` 值)。

 此外，您也可以將 `Accept` 標頭設定為 `application/json` 或 `application/yaml`，分別接收 JSON 或 YAML 格式的 API 定義輸出。

 如需使用 API Gateway Export API 提交 GET 請求的詳細資訊，請參閱 [GetExport](https://docs.aws.amazon.com/apigateway/latest/api/API_GetExport.html)。

**注意**  
 如果您在 API 中定義模型，則模型必須適用於內容類型「application/json」，API Gateway 才會匯出模型。否則，API Gateway 會擲回例外狀況，其錯誤訊息為「只發現 ... 的非 JSON 內文模型」。  
 模型必須包含屬性，或是定義為特定 JSONSchema 類型。

## 下載 JSON 格式的 REST API OpenAPI 定義
<a name="api-gateway-export-api-download-swagger-json"></a>

以 JSON 格式的 OpenAPI 定義匯出並下載 REST API：

------
#### [ 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)。

## 下載 YAML 格式的 REST API OpenAPI 定義
<a name="api-gateway-export-api-download-swagger-yaml"></a>

以 YAML 格式的 OpenAPI 定義匯出並下載 REST API：

------
#### [ 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
```

------

## 下載 JSON 格式且具有 Postman 延伸的 REST API OpenAPI 定義
<a name="api-gateway-export-api-download-swagger-json-with-postman"></a>

以 JSON 格式的 OpenAPI 定義搭配 Postman 匯出並下載 REST API：

------
#### [ 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
```

------

## 下載 YAML 格式且具有 API Gateway 整合的 REST API OpenAPI 定義
<a name="api-gateway-export-api-download-swagger-yaml-with-apig"></a>

以 YAML 格式的 OpenAPI 定義搭配 API Gateway 整合匯出並下載 REST API：

------
#### [ 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/zh_tw/apigateway/latest/developerguide/images/export-new-console.png)


指定 **API 規格類型**、**格式**和**延伸模組**，以下載 API 的 OpenAPI 定義。