配置网关响应
网关响应指ROMA API未能成功处理API请求,从而产生的错误响应。ROMA 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运行时变量($context变量),具体见API运行时可获取变量。
操作步骤
- 登录ROMA API控制台。
- 在控制台单击,选择区域,在“ROMA API”下选择待操作的应用。
- 在左侧导航栏选择“API管理 > API服务”。
- 在当前应用关联的实例中,根据实际业务选择实例。
- 在页面上单击服务名称,进入API服务详情页面。
- 在“网关响应”区域,即可新增或编辑网关响应。
- 如果修改完默认网关响应后,需要恢复默认配置,单击“恢复默认配置”即可。
- 不论“default(默认)”或是您自定义的网关响应,响应类型范围固定不可修改。您可以修改每种响应的状态码,以及响应内容。
- 响应内容的错误信息以及其他信息,可通过变量的方式获取,支持的变量见表2。
网关错误响应类型说明
ROMA API提供的错误响应类型见表1,其中响应状态码可以按实际需要做自定义修改。
错误响应类型 |
默认的响应状态码 |
错误说明 |
详细说明 |
---|---|---|---|
ACCESS_DENIED |
403 |
拒绝访问 |
拒绝访问,如触发配置的访问控制策略、或异常攻击检测拦截 |
AUTHORIZER_CONF_FAILURE |
500 |
自定义认证配置错误 |
自定义认证方异常,通信失败、返回异常响应等错误 |
AUTHORIZER_FAILURE |
500 |
自定义认证失败 |
自定义认证方返回认证失败 |
AUTHORIZER_IDENTITIES_FAILURE |
401 |
自定义认证身份来源错误 |
前端自定义认证的身份来源信息缺失或不合法错误 |
AUTH_FAILURE |
401 |
认证失败 |
认证失败,IAM或APP认证校验失败 |
AUTH_HEADER_MISSING |
401 |
认证身份来源缺失 |
认证身份来源信息缺失 |
BACKEND_TIMEOUT |
504 |
后端超时 |
后端超时,与后端的网络交互超过预配置的时间错误 |
BACKEND_UNAVAILABLE |
502 |
后端不可用 |
后端不可用,网络不可达错误 |
DEFAULT_4XX |
- |
默认4XX |
其它4XX类错误 |
DEFAULT_5XX |
- |
默认5XX |
其它5XX类错误 |
NOT_FOUND |
404 |
未找到匹配的API |
未匹配到API |
REQUEST_PARAMETERS_FAILURE |
400 |
请求参数错误 |
请求参数校验失败、不支持的HTTP方法 |
THROTTLED |
429 |
调用次数超出阈值 |
API调用次数超出所配置的流量策略阈值 |
UNAUTHORIZED |
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 |
当前网关错误响应的错误类型 |