新增网关响应
操作场景
网关响应,指API网关未能成功处理API请求,从而产生的错误响应。API网关提供默认的网关响应(default),如果您需要自定义响应状态码或网关响应内容,可在API分组管理中新增网关响应,其中响应内容符合JSON格式即可。
例如,“default”网关的响应内容为:
{"error_code": "$context.error.code", "error_msg": "$context.error.message", "request_id": "$context.requestId"} 您可以自定义为:
{"errorcode": "$context.error.code", "errormsg": "$context.error.message", "requestid": "$context.requestId","apiId":"$context.apiId"} JSON体的内容可以按需定制,包括增减字段内容。
- API提供的默认网关响应“default”也可以编辑修改。
- 您可以新增多个网关响应,支持同一分组下不同API配置不同的网关响应内容。
- 网关响应所定义的错误类型固定且不可修改,具体见网关错误响应类型说明。
- 响应内容支持调用API网关运行时变量($context变量),具体见API网关运行时可获取变量。
前提条件
已创建分组。
操作步骤
网关错误响应类型说明
API网关提供的错误响应类型见表1,其中响应状态码可以按实际需要做自定义修改。
| 错误说明 | 默认的响应状态码 | 详细说明 |
|---|---|---|
| 拒绝访问 | 403 | 拒绝访问,如触发配置的访问控制策略、或异常攻击检测拦截 |
| 自定义认证配置错误 | 500 | 自定义认证方异常,通信失败、返回异常响应等错误 |
| 自定义认证失败 | 500 | 自定义认证方返回认证失败 |
| 自定义认证身份来源错误 | 401 | 前端自定义认证的身份来源信息缺失或不合法错误 |
| 认证失败 | 401 | 认证失败,IAM或APP认证校验失败 |
| 认证身份来源缺失 | 401 | 认证身份来源信息缺失 |
| 后端超时 | 504 | 后端超时,与后端的网络交互超过预配置的时间错误 |
| 后端不可用 | 502 | 后端不可用,网络不可达错误 |
| 默认4XX | - | 其它4XX类错误 |
| 默认5XX | - | 其它5XX类错误 |
| 未找到匹配的API | 404 | 未匹配到API |
| 请求参数错误 | 400 | 请求参数校验失败、不支持的HTTP方法 |
| 调用次数超出阈值 | 429 | API调用次数超出所配置的流量策略阈值 |
| 应用未授权 | 401 | 使用的应用未被授权访问该API |
API网关运行时可获取变量
| 运行时变量名称 | 描述 |
|---|---|
| $context.apiId | API的ID |
| $context.appId | API调用者的APP对象ID |
| $context.requestId | 当次API调用生成请求ID |
| $context.stage | API调用的部署环境 |
| $context.sourceIp | API调用者的源地址 |
| $context.authorizer.frontend.property | 前端自定义认证响应的context映射的指定键值对的字符串值 |
| $context.authorizer.backend.property | 后端自定义认证响应的context映射的指定键值对的字符串值 |
| $context.error.message | 当前网关错误响应的错误信息 |
| $context.error.code | 当前网关错误响应的错误码 |
| $context.error.type | 当前网关错误响应的错误类型 |
