概述
网关支持导入OAS2.0和OAS3.0格式的API定义,帮助用户快速将现有系统的API接入网关。API网关既支持标准OAS格式的API定义的导入、也支持OAS定义扩展后的API定义导入。
导入标准OAS格式的API定义
导入API的流程主要包括:
- 选择基本信息(必填)与全局配置(选填).
- 文本填写或文件导入OAS 2.0或OAS 3.0格式的API定义.
- 进行预检并根据检查结果进行调整.
- 执行导入,成功导入后会生成对应的API和分组模型.
对应控制台操作为:
1, 进入API托管->API管理菜单页.
2, 在API列表页点击导入Swagger按钮,进入API导入配置页面.
a. 基本信息,必填
参数 | 描述 |
---|---|
导入分组 | 提供分组下拉列表,当API定义版本为OAS2时,用户填写的basePath需与所选分组的basePath一致,否则会预检失败 |
是否覆盖 | 当选择覆盖时,如果遇到请求路径和http请求冲突时,自动覆盖原有API;当不选择覆盖时,如果遇到请求路径和http请求冲突时,返回错误提示API已经存在 |
API定义版本 | 可选OAS2.0和OAS3.0。会校验所填写的API定义与所选版本是否适配 |
后端服务 | 如果在OAS定义中未填写"x-ctyun-apigateway-backend"扩展字段值,则以该服务作为后端服务;否则优先使用OAS中定义的服务信息 |
b. 全局配置,选填.主要是对入参请求模式,防止重放攻击进行API全局设置。如果用户OAS定义中通过扩展字段填写了该配置信息,则优先使用用户配置.
c. API定义,确定计划导入的OAS定义内容,支持文本填入yaml或json格式的API定义内容,也支持上传本地API定义文件。
3, 单击预检按钮,系统将会对计划导入的内容进行检查,检测出OAS定义中的API定义和模型定义,以及告警和错误信息。
4, 预检过程中没有错误信息和警告信息(或者忽略警告信息之后),可执行导入。单击导入Swagger按钮,系统真正开始导入API,导入API需要一定时间,导入过程请勿关闭浏览器。
5, 待系统执行完毕后,可查看到API导入结果。
标准OAS2.0格式与API网关的对应
本章节重点介绍OAS 2.0的格式定义与网关的API定义有对应的映射字段,对于没有对应映射的OAS中的定义,不会影响API的导入。
- Swagger Object:
- BasePath:对应分组的BasePath,导入时需要认证;
- Path Item Object:
- Path:对应API定义中请求部分的请求path;
- Method:对应API定义中请求部分的Method,支持GET,POST,PUT,HEAD,DELETE,PATCH,OPTIONS;
- Operation Object:
- Summary:对应API定义的描述;
- OperationId:对应API定义的API名称,如果存在扩展字段“x-ctyun-apigateway-api-name”则使用扩展字段中的内容作为API的名称;
- Schemes:对应API定义中请求部分支持的协议,优先级高于Swagger Object中的定义;
- Parameter Object:
- Name:对应API定义中请求部分的参数名称;
- In:对应API定义中请求部分的参数位置,支持path,query,head,formdata;
- Description:对应API定义中请求部分的参数描述;
- Required:对应API定义中请求部分的参数是否必填;
- Response Object:
- HTTP Status Code:对应API定义中定义返回结果中错误码定义中的错误码;
- Description:对应API定义中定义返回结果中错误码定义中的描述;
- Schema:对应API定义中定义返回结果中错误码定义中的模型;
- Definitions Object:
该项定义中的对象,在导入的过程中,API网关会将模型创建在分组下,查看模型定义可以通过分组管理列表下,对应分组的操作栏中的模型管理查看。
标准OAS3.0格式与API网关的对应
本章节重点介绍OAS 3.0的格式定义与API网关的API定义有对应的映射字段,对于没有对应映射的OAS中的定义,不会影响API的导入。
- Path Item Object
- Path:对应API定义中请求部分的请求path;
- Method:对应API定义中请求部分的Method,支持GET,POST,PUT,HEAD,DELETE,PATCH,OPTIONS;
- Operation Object
- Summary:对应API定义的描述;
- OperationId:对应API定义的API名称,如果存在扩展字段“x-ctyun-apigateway-api-name”则使用扩展字段中的内容作为API的名称;
- Parameter Object
- Name:对应API定义中请求部分的参数名称;
- In:对应API定义中请求部分的参数位置,支持path,query,head,formdata;
- Required:对应API定义中请求部分的参数是否必填;
- Schema Object:
- Description:对应API定义中请求部分的参数描述;
- Type:对应API定义中请求部分的参数类型;
- Responses Object
- HTTP Status Code:对应API定义中定义返回结果中错误码定义中的错误码;
- Description:对应API定义中定义返回结果中错误码定义中的描述;
- Content:对应API定义中定义返回结果中错误码定义中的模型;
导入具有API网关扩展字段的OAS格式定义
swagger支持导入具有API网关扩展字段的OAS格式定义
扩展字段 | OAS中位置 | 含义 | 类型 | 示例 | 说明 |
---|---|---|---|---|---|
x-ctyun-apigateway-api-name | Operation | API名称 | String | “api-name-test” | 优先于operationId的值作为api名称 |
x-ctyun-apigateway-is-anti-replay | Operation | 是否设置防重放攻击 | Boolean | true | 只支持true和false, 默认false |
x-ctyun-apigateway-backend | Operation | 后端服务定义 | Object | { "gwServiceCode" :"ea180dd257714a56af39d3408fdf072b","postPath" : "/", "postMethod" : "GET","timeout" : 10000.0} | ·gwServiceCode为已创建的API服务Code,必填;·postPath为后端请求path,不填写则默认与api中的path一致;·postMethod为后端转发method,不填写则与api中的method一致;·timeout为后端服务超时时间,单位是ms,不填写默认为10000. |
x-ctyun-apigateway-common-parameters | Operation | 常量参数定义 | Object | [{"paramName" : "spuinstId","paramValue" : "swdeefd","paramLocation" : "query","description" : ""},{"paramName" : "version","paramValue" : "v1","paramLocation" : "header","description" : ""}] | 该字段的值是一个对象列表,可填写多个常量参数。·paramName为常量参数名称·paramValue为常量参数值·paramLocation为常量参数位置,只支持query和header两种,不填写则默认query·description为描述信息 |
x-ctyun-apigateway-system-parameters | Operation | 系统参数定义 | Object | [ {"systemParamName" : "routeName","paramName" : "aaa","paramLocation" : "query","description" : ""},{"systemParamName" : "upstreamPort","paramName" : "port","paramLocation" : "header","description" : ""}] | 该字段的值是一个对象列表,可填写多个系统参数。·systemParamName为系统参数名称,目前支持的有upstreamId, upstreamPort, routeId, routeName, serviceId, serviceName·paramName为对应的赋值参数名称·paramLocation为系统参数位置,只支持query和header两种,不填写则默认query·description为描述信息 |
x-ctyun-apigateway-request-argument-mode | Operation | 入参请求模式 | String | “MAPPING_FILTER” | 支持三种入参请求模式:·MAPPING_FILTER:入参映射(支持过滤参数)·MAPPING_PASS:入参映射(透传未知参数)·PASS:入参透传不填写默认为PASS |
x-ctyun-apigateway-response-messages | Responses | 错误码错误信息 | String | “This is errorCodemessage” | |
x-ctyun-apigateway-parameter-demo | Parameter | 参数定义示例值 | String | ||
x-ctyun-apigateway-backend-location | Parameter | 后端服务参数映射位置 | String | “path” | 只支持path,query和header,不填写时默认与api入参定义参数位置一致 |
x-ctyun-apigateway-backend-name | Parameter | 后端服务参数映射名称 | String | “abc” | 不填写时默认与api入参定义参数名称一致 |
x-ctyun-apigateway-success-demo | Operation | 返回结果示例 | String | “This is a failed demo” | |
x-ctyun-apigateway-failed-demo | Operation | 失败结果示例 | String | “This is a success demo” | |
x-ctyun-apigateway-request-body-schema | Operation | 请求body引用模型名称 | String | “people” | 只有当请求方法为post, patch, put, delete,且body数据类型为Json时,该字段才生效,引用的模型名称应存在模型定义中 |
x-ctyun-apigateway-request-body-description | Operation | 请求body内容描述 | String | 生效条件同上 | |