導出API
更新時間 2024-11-12 09:54:22
最近更新時間: 2024-11-12 09:54:22
分享文章
概述
網關支持將API分組下的API按照OAS2.0和OAS3.0的格式導出,方便用戶實現跨賬號,跨地域間甚至跨平臺的數據遷移。
OpenAPI 規范(OAS),是定義一個標準的、與具體編程語言無關的RESTful API的規范。
導出標準OAS格式的API定義
網關目前支持兩種API導出方式
通過分組導出API定義
- 進入 API 托管->分組管理 菜單頁。
- 點擊 導出API定義 按鈕 ,在彈出框中指定導出的數據格式,環境以及是否需要 導出API網關拓展定義 。
- 點擊導出按鈕后瀏覽器會下載API定義壓縮包.
直接批量導出API定義
- 進入 API 托管->API管理 菜單頁。
- 批量勾選API后在批量操作下拉框中點擊導出API定義 按鈕 ,在彈出框中指定導出的數據格式,環境以及是否需要 導出API網關拓展定義 。
- 點擊導出按鈕后瀏覽器會下載API定義壓縮包.
注意批量導出API定義時僅支持導出同一個分組下的API
API擴展定義字段
如果在導出OAS規范的定義中選擇了導出API網關擴展字段,在導出的API定義文件中會添加網關的擴展字段。擴展屬性被設計為總是以 "x-" 為前綴的模式字段,此字段的值可以是 null、原始類型、數組或對象。可以包含任意有效的 JSON 格式的值。
| 擴展字段 | OAS中位置 | 說明 | 類型 |
|---|---|---|---|
| x-ctyun-apigateway-api-name | Operation | API名稱 | String |
| x-ctyun-apigateway-is-anti-replay | Operation | 是否設置防重放攻擊 | Boolean |
| x-ctyun-apigateway-backend | Operation | 后端服務定義 | Object |
| x-ctyun-apigateway-common-parameters | Operation | 常量參數定義 | Object |
| x-ctyun-apigateway-system-parameters | Operation | 系統參數定義 | Object |
| x-ctyun-apigateway-request-argument-mode | Operation | 入參請求模式 | String |
| x-ctyun-apigateway-response-messages | Responses | 錯誤碼錯誤信息 | String |
| x-ctyun-apigateway-parameter-demo | Parameter | 參數定義示例值 | String |
| x-ctyun-apigateway-backend-location | Parameter | 后端服務參數映射位置 | String |
| x-ctyun-apigateway-backend-name | Parameter | 后端服務參數映射名稱 | String |
| x-ctyun-apigateway-success-demo | Operation | 返回結果示例 | String |
| x-ctyun-apigateway-failed-demo | Operation | 失敗結果示例 | String |
| x-ctyun-apigateway-request-body-schema | Operation | 請求body引用的模型名 | String |
| x-ctyun-apigateway-request-body-description | Operation | 請求body內容描述 | String |
說明
導出OAS2格式的定義時,會導出分組的base path;
每次可以導出的API數量限制為50個API;
分組模型管理里中定義的模型定義如果無法解析,導出的內容中將不包含模型定義;
以API為單位導出時,所有勾選的API會導出到一個文件中;
未勾選導出API網關擴展字段時,導出OAS文件中的OperationId為API定義的請求path和請求method的拼接后的字符串,如“export1ByGET”;
勾選導出API網關擴展字段后,在API網關定義API以外的內容,如綁定的插件、授權的APP、分組的域名、后端服務在各環境上的定義等,均不會被導出。
API導出樣例
以下是一個OAS2版本的導出定義示例:
{
"swagger" : "2.0",
"info" : {
"description" : "Export from api group group4",
"version" : "1.0.0",
"title" : "Ctyun Gateway API"
},
"basePath" : "/user1",
"paths" : {
"/uhe/:c" : {
"post" : {
"summary" : "",
"operationId" : "uhecByPOST",
"schemes" : [ "http", "https" ],
"parameters" : [ {
"name" : "a",
"in" : "query",
"description" : "",
"required" : false,
"type" : "string",
"x-ctyun-apigateway-parameter-demo" : "1",
"x-ctyun-apigateway-backend-location" : "query",
"x-ctyun-apigateway-backend-name" : "a"
}, {
"name" : "b",
"in" : "header",
"description" : "",
"required" : false,
"type" : "string",
"x-ctyun-apigateway-parameter-demo" : "2",
"x-ctyun-apigateway-backend-location" : "header",
"x-ctyun-apigateway-backend-name" : "b"
}, {
"name" : "c",
"in" : "path",
"description" : "",
"required" : false,
"type" : "string",
"x-ctyun-apigateway-parameter-demo" : "test",
"x-ctyun-apigateway-backend-location" : "path",
"x-ctyun-apigateway-backend-name" : "change"
} ],
"x-ctyun-apigateway-request-argument-mode" : "PASS",
"x-ctyun-apigateway-common-parameters" : [ {
"paramName" : "num",
"paramValue" : "2",
"paramLocation" : "query",
"description" : ""
} ],
"x-ctyun-apigateway-api-name" : "testaa-clone-clone",
"x-ctyun-apigateway-system-parameters" : [ ],
"x-ctyun-apigateway-backend" : {
"gwServiceCode" : "ea180dd257714a56af39d3408fdf072b",
"postPath" : "/ko/[change]/",
"postMethod" : "POST",
"timeout" : 10000.0
},
"x-ctyun-apigateway-is-anti-replay" : false
}
},
"definitions" : {
"schema3" : {
"type" : "object",
"required" : [ "name" ],
"properties" : {
"id" : {
"type" : "integer",
"format" : "int32"
},
"name" : {
"type" : "string"
},
"status" : {
"type" : "string"
},
"dogProject" : {
"type" : "object",
"properties" : {
"name" : {
"type" : "string"
},
"id" : {
"type" : "integer",
"format" : "int32"
}
}
}
}
}
}
}