從 API Gateway 匯出 REST API - Amazon API Gateway

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

從 API Gateway 匯出 REST API

一旦您使用 API Gateway 主控台或其他方式,在 API Gateway 中建立並配置 REST API,就可以使用 API Gateway Export API (屬於 Amazon API Gateway 控制服務的一部分) 將其匯出至 OpenAPI 檔案。若要使用 API Gateway Export API,您必須簽署 API 請求。如需簽署請求的詳細資訊,請參閱《IAM 使用者指南》中的簽署 AWS API 請求。您可以選擇在匯出的 OpenAPI 定義檔中包含 API Gateway 整合延伸項目和 Postman 延伸項目。

注意

當使用 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

如果 API 的承載類型不是 application/json,則無法匯出 API。如果您嘗試,則會收到錯誤回應,指出找不到 JSON 內文模型。

匯出 REST API 的請求

使用匯出 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/jsonapplication/yaml,分別接收 JSON 或 YAML 格式的 API 定義輸出。

如需使用 API Gateway Export API 提交 GET 請求的詳細資訊,請參閱 GetExport

注意

如果您在 API 中定義模型,則模型必須適用於內容類型「application/json」,API Gateway 才會匯出模型。否則,API Gateway 會擲回例外狀況,其錯誤訊息為「只發現 ... 的非 JSON 內文模型」。

模型必須包含屬性,或是定義為特定 JSONSchema 類型。

下載 JSON 格式的 REST API OpenAPI 定義

以 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 的所有區域,請參閱區域和端點

下載 YAML 格式的 REST API OpenAPI 定義

以 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 定義

以 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 定義

以 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

將 REST API 部署至階段之後,即可繼續使用 API Gateway 主控台,將階段中的 API 匯出至 OpenAPI 檔案。

在 API Gateway 主控台的階段窗格中,選擇階段動作匯出

使用 API Gateway 主控台匯出 REST API

指定 API 規格類型格式延伸模組,以下載 API 的 OpenAPI 定義。