API网关 APIGAPI网关 APIG

更新时间:2021/09/27 GMT+08:00
分享

新增网关响应

操作场景

网关响应,指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网关运行时可获取变量

前提条件

已创建分组。

操作步骤

  1. 登录管理控制台。
  2. 在管理控制台左上角单击,选择区域。
  3. 单击管理控制台左上角,然后单击“API网关 APIG”。
  4. 在左侧选择您的API版本,单击并进入到对应版本的API开发与调用管理页面。

    • “共享版”指直接创建并管理API,如涉及到费用,以API调用次数计费。
    • “专享版”指在API专享版实例中创建并管理API,如涉及到费用,按实例运行时间计费。

  5. 单击“开放API > API分组”,进入到API分组信息页面。
  6. 找到您要新增或编辑修改网关响应的分组,单击并进入分组详情页。
  7. 单击其中的“网关响应”页签,即可新增网关响应。

    • 如需编辑具体某个响应的详情,右侧有“编辑”按钮,单击即可修改响应状态码、响应内容。
    • 不论是“default”或是您自定义的网关响应,响应类型范围固定不可修改。您可以修改每种响应的状态码,以及响应内容。
    • 响应内容的错误信息以及其他信息,可通过变量的方式获取,支持的变量见表2

网关错误响应类型说明

API网关提供的错误响应类型见表1,其中响应状态码可以按实际需要做自定义修改。

表1 API网关的错误响应类型

错误说明

默认的响应状态码

详细说明

拒绝访问

403

拒绝访问,如触发配置的访问控制策略、或异常攻击检测拦截

自定义认证配置错误

500

自定义认证方异常,通信失败、返回异常响应等错误

自定义认证失败

500

自定义认证方返回认证失败

自定义认证身份来源错误

401

前端自定义认证的身份来源信息缺失或不合法错误

认证失败

401

认证失败,IAM或APP认证校验失败

认证身份来源缺失

401

认证身份来源信息缺失

后端超时

504

后端超时,与后端的网络交互超过预配置的时间错误

后端不可用

502

后端不可用,网络不可达错误

默认4XX

-

其它4XX类错误

默认5XX

-

其它5XX类错误

未找到匹配的API

-

未匹配到API

请求参数错误

404

请求参数校验失败、不支持的HTTP方法

调用次数超出阈值

429

API调用次数超出所配置的流量策略阈值

应用未授权

401

使用的应用未被授权访问该API

API网关运行时可获取变量

表2 网关错误响应消息体支持的变量

运行时变量名称

描述

$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

当前网关错误响应的错误类型

分享:

    相关文档

    相关产品