更新时间:2024-08-06 GMT+08:00

创建分组自定义响应

功能介绍

新增分组下自定义响应

调用方法

请参见如何调用API

URI

POST /v2/{project_id}/apigw/instances/{instance_id}/api-groups/{group_id}/gateway-responses

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID,获取方式请参见获取项目ID

instance_id

String

实例ID,在API网关控制台的“实例信息”中获取。

group_id

String

分组的编号

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。

表3 请求Body参数

参数

是否必选

参数类型

描述

name

String

响应名称。支持英文、数字、下划线、中划线,1-64个字符。

responses

Map<String,ResponseInfo>

错误类型的响应定义,其中key为错误类型。key的枚举值为:

  • AUTH_FAILURE:认证失败
  • AUTH_HEADER_MISSING:认证身份来源缺失
  • AUTHORIZER_FAILURE:自定义认证失败
  • AUTHORIZER_CONF_FAILURE:自定义认证配置错误
  • AUTHORIZER_IDENTITIES_FAILURE:自定义认证身份来源错误
  • BACKEND_UNAVAILABLE:后端不可用
  • BACKEND_TIMEOUT:后端超时
  • THROTTLED:调用次数超出阈值
  • UNAUTHORIZED:应用未授权
  • ACCESS_DENIED:拒绝访问
  • NOT_FOUND:未找到匹配的API
  • REQUEST_PARAMETERS_FAILURE:请求参数错误
  • DEFAULT_4XX:默认4XX
  • DEFAULT_5XX:默认5XX
  • THIRD_AUTH_FAILURE: 第三方认证失败
  • THIRD_AUTH_IDENTITIES_FAILURE: 第三方认证身份来源错误
  • THIRD_AUTH_CONF_FAILURE: 第三方认证配置错误
  • ORCHESTRATION_PARAMETER_NOT_FOUND: 没有入参进行参数编排规则匹配,参数编排失败
  • ORCHESTRATION_FAILURE: 有入参进行参数编排规则匹配,但是匹配不上编排规则,参数编排失败

每项错误类型均为一个JSON体

表4 ResponseInfo

参数

是否必选

参数类型

描述

status

Integer

响应的HTTP状态码。范围为200-599,但不允许为444。

body

String

响应的Body模板

headers

Array of ResponseInfoHeader objects

自定义的响应头

数组长度:0 - 10

表5 ResponseInfoHeader

参数

是否必选

参数类型

描述

key

String

分组自定义响应的响应头的key,支持英文字母、数字和中划线,长度为1到128位

value

String

分组自定义响应的响应头的value,为长度为1到1024位的字符串

最小长度:1

最大长度:1024

响应参数

状态码: 201

表6 响应Body参数

参数

参数类型

描述

name

String

响应名称

responses

Map<String,ResponseInfoResp>

错误类型的响应定义,其中key为错误类型。key的枚举值为:

  • AUTH_FAILURE:认证失败
  • AUTH_HEADER_MISSING:认证身份来源缺失
  • AUTHORIZER_FAILURE:自定义认证失败
  • AUTHORIZER_CONF_FAILURE:自定义认证配置错误
  • AUTHORIZER_IDENTITIES_FAILURE:自定义认证身份来源错误
  • BACKEND_UNAVAILABLE:后端不可用
  • BACKEND_TIMEOUT:后端超时
  • THROTTLED:调用次数超出阈值
  • UNAUTHORIZED:应用未授权
  • ACCESS_DENIED:拒绝访问
  • NOT_FOUND:未找到匹配的API
  • REQUEST_PARAMETERS_FAILURE:请求参数错误
  • DEFAULT_4XX:默认4XX
  • DEFAULT_5XX:默认5XX
  • THIRD_AUTH_FAILURE: 第三方认证失败
  • THIRD_AUTH_IDENTITIES_FAILURE: 第三方认证身份来源错误
  • THIRD_AUTH_CONF_FAILURE: 第三方认证配置错误
  • ORCHESTRATION_PARAMETER_NOT_FOUND: 没有入参进行参数编排规则匹配,参数编排失败
  • ORCHESTRATION_FAILURE: 有入参进行参数编排规则匹配,但是匹配不上编排规则,参数编排失败

每项错误类型均为一个JSON体

id

String

响应ID

default

Boolean

是否为分组默认响应

create_time

String

创建时间

update_time

String

修改时间

表7 ResponseInfoResp

参数

参数类型

描述

status

Integer

响应的HTTP状态码。范围为200-599,但不允许为444。

body

String

响应的Body模板

headers

Array of ResponseInfoHeader objects

自定义的响应头

数组长度:0 - 10

default

Boolean

是否为默认响应

表8 ResponseInfoHeader

参数

参数类型

描述

key

String

分组自定义响应的响应头的key,支持英文字母、数字和中划线,长度为1到128位

value

String

分组自定义响应的响应头的value,为长度为1到1024位的字符串

最小长度:1

最大长度:1024

状态码: 400

表9 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 401

表10 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 403

表11 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 404

表12 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 500

表13 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

请求示例

创建分组自定义响应

{
  "name" : "response_demo"
}

响应示例

状态码: 201

Created

{
  "create_time" : "2020-08-12T14:52:02.829753306+08:00",
  "update_time" : "2020-08-12T14:52:02.829753306+08:00",
  "default" : false,
  "id" : "e839b367e10f4ab19d1c5008e476b83a",
  "name" : "response_demo",
  "responses" : {
    "ACCESS_DENIED" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 403
    },
    "AUTHORIZER_CONF_FAILURE" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 500
    },
    "AUTHORIZER_FAILURE" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 500
    },
    "AUTHORIZER_IDENTITIES_FAILURE" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 401
    },
    "AUTH_FAILURE" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 401
    },
    "AUTH_HEADER_MISSING" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 401
    },
    "BACKEND_TIMEOUT" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 504
    },
    "BACKEND_UNAVAILABLE" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 502
    },
    "DEFAULT_4XX" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true
    },
    "DEFAULT_5XX" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true
    },
    "NOT_FOUND" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 404
    },
    "REQUEST_PARAMETERS_FAILURE" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 400
    },
    "THROTTLED" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 429
    },
    "UNAUTHORIZED" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 401
    },
    "THIRD_AUTH_FAILURE" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 401
    },
    "THIRD_AUTH_IDENTITIES_FAILURE" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 401
    },
    "THIRD_AUTH_CONF_FAILURE" : {
      "body" : "{\"error_code\":\"$context.error.code\",\"error_msg\":\"$context.error.message\",\"request_id\":\"$context.requestId\"}",
      "default" : true,
      "status" : 500
    }
  }
}

状态码: 400

Bad Request

{
  "error_code" : "APIG.2011",
  "error_msg" : "Invalid parameter value,parameterName:name. Please refer to the support documentation"
}

状态码: 401

Unauthorized

{
  "error_code" : "APIG.1002",
  "error_msg" : "Incorrect token or token resolution failed"
}

状态码: 403

Forbidden

{
  "error_code" : "APIG.1005",
  "error_msg" : "No permissions to request this method"
}

状态码: 404

Not Found

{
  "error_code" : "APIG.3001",
  "error_msg" : "API group c77f5e81d9cb4424bf704ef2b0ac7600 does not exist"
}

状态码: 500

Internal Server Error

{
  "error_code" : "APIG.9999",
  "error_msg" : "System error"
}

状态码

状态码

描述

201

Created

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

500

Internal Server Error

错误码

请参见错误码