导出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"
            }
          }
        }
      }
    }
  }
}
