更新时间:2022-08-30 GMT+08:00
分享

导入API到新分组

功能介绍

通过导入的swagger文件创建新分组和新API。swagger文件支持json以及yaml格式。

URI

HTTP/HTTPS请求方法以及URI如下表所示。

表1

请求方法

URI

POST

/v1/{project_id}/apigw/instances/{instance_id}/openapi[?extend_mode]

URI中的参数说明如下表所示。

表2 参数说明

参数

参数位置

是否必选

类型

说明

project_id

path

String

项目ID。可从控制台“我的凭证”中获取region下项目ID,管理员权限可查询。

instance_id

path

String

实例ID,可从API网关控制台的专享版实例信息中获取。

extend_mode

query

String

扩展信息导入模式,取值可选merge和override。

当扩展信息定义冲突时,merge保留原有扩展信息,override会覆盖原有扩展信息。

请求消息

表3 参数说明

名称

是否必选

参数类型

说明

swagger

String

固定值2.0

info

Object

参考表4

paths

Object

参考表 paths参数说明

responses

Object

公用响应定义,可以被引用在{method}的操作中,参考表9

securityDefinitions

Object

定义鉴权方式,参考表13

x-apigateway-access-controls

Object

访问控制信息,参考表 x-apigateway-access-controls参数说明

x-apigateway-ratelimits

Object

流量空时信息,参考表 x-apigateway-ratelimits参数说明

表4 info参数说明

名称

是否必选

参数类型

说明

title

String

API分组名称

version

String

版本号,用户输入自定义版本号或者使用默认的当前时间

description

String

分组描述信息

表5 paths参数说明

名称

是否必选

参数类型

说明

uri

Object

API访问地址,参考表6

表6 uri参数说明

名称

是否必选

参数类型

说明

method

Object

API访问方法,参考表7

表7 method参数说明

名称

是否必选

参数类型

说明

operationId

String

API的名称

description

String

API的描述信息

schemes

Object

API的请求协议对象数组定义,支持http、https

tags

Object

API标签对象数组定义

parameters

Object

请求参数对象数组定义,参考表 前端parameters参数说明

responses

Object

响应定义,参考表9

security

Object

API的认证类型对象数组定义,参考表 security参数说明

x-apigateway-access-control

Object

API绑定的访问控制对象数组定义

x-apigateway-backend

Object

API的后端信息,参考表 x-apigateway-backend参数说明

x-apigateway-backend-policies

Object

API的策略后端信息,参考表 x-apigateway-backend-policies参数说明

x-apigateway-cors

Boolean

是否支持跨域

x-apigateway-match-mode

String

API的匹配方式

x-apigateway-ratelimit

String

API绑定的流量控制名称

x-apigateway-request-type

String

API的类型

表8 前端parameters参数说明

名称

是否必选

参数类型

说明

maximum

Float

参数为数值类型时,最大参数值

minimum

Float

参数为数值类型时,最小参数值

maxLength

Integer

参数为字符串类型时,参数的最大长度

minLength

Integer

参数为字符串类型时,参数的最小长度

pattern

String

参数值为正则匹配表达式

type

String

参数类型

default

String

参数默认值

description

String

参数描述信息

name

String

参数名称

in

String

参数位置,支持path、header、query、formData、body

required

Boolean

参数是否必需,参数位置为path时必需

表9 responses参数说明

名称

是否必选

参数类型

说明

default

Object

缺省响应,描述未定义的响应码

status_code

Object

响应状态码,值为响应对象,参考表11

x-apigateway-result-failure-sample

String

失败返回示例,描述API的异常返回信息

x-apigateway-result-normal-sample

String

正常响应示例,描述API的正常返回信息

表10 security参数说明

名称

是否必选

参数类型

说明

apig-auth-type

Object

API的认证类型对象数组定义,为空数组

apig-auth-type支持:

  • APP认证: apig-auth-app
  • IAM认证:apig-auth-iam
  • NONE:不填写
表11 status code参数说明

名称

是否必选

参数类型

说明

description

String

响应描述信息

schema

Object

响应正文定义,参考表12

表12 schema参数说明

名称

是否必选

参数类型

说明

description

String

BODY体描述

type

String

BODY体类型:FORM/STREAM(表单/字节流)

表13 securityDefinitions参数说明

名称

是否必选

参数类型

说明

name

Object

自定义鉴权方式名称,参考表14

表14 name参数说明

名称

是否必选

参数类型

说明

type

String

鉴权类型,支持apiKey

name

String

apiKey参数名称

in

String

apiKey参数位置

x-apigateway-auth-type

String

扩展鉴权类型,基于apiKey鉴权方式的扩展,网关自定义的鉴权方式,支持AppSigv1、IAM、IAM_NONE

表15 x-apigateway-backend参数说明

名称

是否必选

参数类型

说明

type

String

API后端类型,支持HTTP、HTTP-VPC、FUNCTION、MOCK

parameters

Object

后端参数对象数组定义,参考表 后端parameters参数说明

backend_define

Object

API后端定义

backend_define支持:

表16 x-apigateway-backend-policies参数说明

名称

是否必选

参数类型

说明

type

String

API后端类型,支持HTTP、HTTP-VPC、FUNCTION、MOCK

name

String

后端策略名称

parameters

Object

后端参数对象数组定义,参考表 后端parameters参数说明

backend_define

Object

API后端定义

backend_define支持:

conditions

Object

策略条件对象数组定义,参考表 conditions参数说明

effectMode

String

关联的策略组合模式,支持ANY、ALL

表17 后端parameters参数说明

名称

是否必选

参数类型

说明

name

String

参数名称,由字母、数字、下划线、连线、点组成,以字母开头,最长32字节

header位置的参数名称不区分大小写

value

String

参数值,当参数来源为REQUEST时,值为请求参数名称

in

String

参数位置,支持header、query、path

origin

String

参数映射来源,支持REQUEST、CONSTANT

description

String

参数含义描述

表18 后端httpEndpoints参数说明

名称

是否必选

参数类型

说明

address

String

后端服务地址,格式为:<域名或IP>:[port]

scheme

String

后端请求协议定义,支持http、https

method

String

后端请求方法,支持GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCH、ANY

path

String

后端请求路径,支持路径变量

timeout

Integer

后端请求超时时间,单位毫秒,缺省值为5000,取值范围为1 ~ 60000

description

String

API后端描述

表19 后端httpVpcEndpoints参数说明

名称

是否必选

参数类型

说明

name

Array

VPC通道名称

scheme

String

后端请求协议定义,支持http、https

method

String

后端请求方法,支持GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCH、ANY

path

String

后端请求路径,支持路径变量

timeout

Integer

后端请求超时时间,单位毫秒,缺省值为5000,取值范围为1 ~ 60000

host

String

VPC通道代理主机

description

String

API后端描述

表20 后端functionEndpoints参数说明

名称

是否必选

参数类型

说明

function-urn

String

函数URN地址

version

String

函数版本

invocation-type

String

函数调用类型,支持async、sync

timeout

Integer

函数超时时间,单位毫秒,缺省值为5000,取值范围为1 ~ 60000

description

String

API后端描述

表21 后端mockEndpoints参数说明

名称

是否必选

参数类型

说明

result-content

String

MOCK返回结果

description

String

API后端描述

表22 conditions参数说明

名称

是否必选

参数类型

说明

type

String

策略条件类型,支持equal、enum、pattern

value

String

策略条件值

origin

String

策略条件输入来源,支持source、request

parameter

String

策略条件输入来源为request时,请求入参的名称

表23 x-apigateway-access-controls参数说明

名称

是否必选

参数类型

说明

acl_name

Object

指定名称的访问控制策略,参考表 acl_name参数说明

表24 acl_name参数说明

名称

是否必选

参数类型

说明

acl-type

String

访问控制行为,支持PERMIT、DENY

entity-type

String

访问控制对象,支持IP、DOMAIN

value

String

访问控制策略值,多个值以“,”间隔

表25 x-apigateway-ratelimits参数说明

名称

是否必选

参数类型

说明

throttle_name

Object

指定名称的流控策略,参考表 throttle_name参数说明

表26 throttle_name参数说明

名称

是否必选

参数类型

说明

api-limit

Integer

API访问次数限制

user-limit

Integer

用户访问次数限制

app-limit

Integer

应用访问次数限制

ip-limit

Integer

源IP访问次数限制

interval

Integer

流控策略时间周期

unit

String

流控策略时间周期单位,支持SECOND、MINUTE、HOUR、DAY

shared

Boolean

是否共享流控策略

special

Object

特殊流控策略对象数组定义,参考表 special参数说明

表27 special参数说明

名称

是否必选

参数类型

说明

type

String

特殊流控策略类型,支持APP、USER

limit

Integer

访问次数

instance

String

特殊APP或USER的对象标识

请求消息样例:

{
	"swagger": "2.0",
	"info": {
		"description": "api group test",
		"title": "APIGroup_test",
		"version": "2019-09-12-17:38:10"
	},

	"paths": {
		"/test/{path}": {
			"get": {
				"security": [
					{
						"apig-auth-app": []
					}
				],
				"description": "api test",
				"schemes": [
					"https"
				],
				"operationId": "API_test",
				"parameters": [
					{
						"type": "string",
						"description": "header parameter",
						"name": "header",
						"in": "header",
						"required": true
					},
					{
						"type": "string",
						"description": "path parameter",
						"name": "path",
						"in": "path",
						"required": true
					},
					{
						"type": "number",
						"default": "123",
						"description": "query parameter",
						"name": "query",
						"in": "query"
					}
				],
				"responses": {
					"default": {
						"$ref": "#/responses/default"
					},
					"x-apigateway-result-failure-sample": "",
					"x-apigateway-result-normal-sample": "success"
				},
				"x-apigateway-backend": {
					"httpEndpoints": {
						"address": "1.1.1.1:443",
						"description": "",
						"method": "GET",
						"path": "/test/{path}",
						"scheme": "https",
						"timeout": 5000
					},
					"parameters": [
						{
							"description": "",
							"in": "HEADER",
							"name": "header",
							"origin": "REQUEST",
							"value": "header"
						},
						{
							"description": "",
							"in": "PATH",
							"name": "path",
							"origin": "REQUEST",
							"value": "path"
						},
						{
							"description": "",
							"in": "QUERY",
							"name": "query",
							"origin": "REQUEST",
							"value": "query"
						}
					],
					"type": "HTTP"
				},
				"x-apigateway-backend-policies": [
					{
						"conditions": [
							{
								"origin": "param",
								"parameter": "path",
								"type": "exact",
								"value": "path"
							},
							{
								"origin": "source",
								"parameter": "",
								"type": "",
								"value": "1.0.0.0/8"
							}
						],
						"effectMode": "ANY",
						"httpVpcEndpoints": {
							"method": "POST",
							"name": "VPC_n9ct",
							"path": "/",
							"scheme": "HTTPS",
							"timeout": 5000
						},
						"name": "policy_test",
						"type": "HTTP-VPC"
					}
				],
				"x-apigateway-cors": false,
				"x-apigateway-match-mode": "NORMAL",
				"x-apigateway-request-type": "public"
			}
		}
	},
	"responses": {
		"default": {
			"description": "response example"
		}
	},
	"securityDefinitions": {
		"apig-auth-app": {
			"type": "apiKey",
			"name": "Authorization",
			"in": "header",
			"x-apigateway-auth-type": "AppSigv1"
		},
		"apig-auth-iam": {
			"type": "apiKey",
			"name": "unused",
			"in": "header",
			"x-apigateway-auth-type": "IAM"
		}
	}
}

响应消息

表28 参数说明

名称

类型

说明

group_id

String

分组ID

success

Array

导入成功信息,见表29

failure

Array

导入失败信息,见表30

swagger

Object

  
表29 success参数说明

名称

类型

说明

id

String

导入成功的API ID

action

String

导入行为:

  • update:表示更新API
  • create:表示新建API

method

String

API请求方法

path

String

API请求路径

表30 failure参数说明

名称

类型

说明

error_code

String

导入失败的错误码

error_msg

String

导入失败的错误信息

method

String

API请求方法

path

String

API请求路径

表31 swagger参数说明

名称

类型

说明

id

String

swagger文件唯一id

result

String

swagger文件的API导入结果,取值范围:

  • Success
  • Failure

响应消息样例:

{
  "group_id": "27aa2317e3514c5bb5aab5587a5e50ea",
  "success": [
    {
      "id": "aea39194d8db46408be0174b0bd15931",
      "action": "create",
      "method": "GET",
      "path": "/test01"
    }
  ],
  "failure": [
    {
      "error_code": "APIG.2011",
      "error_msg": "Parameter value does not match the rules,parameterName:backend_type",
      "method": "GET",
      "path": "/test02"
    }
  ],
	"swagger": {
		"id": "f38dee667a324c16b8a5d7029df015af",
		"result": "Success"
	}
}

状态码

表32 返回消息说明

状态码

说明

200

OK

400

Bad Request

403

Forbidden

500

Server Internal Error

相关文档