新增网关响应(知识补充,和文章内容无关)


网关响应

网关响应指未能成功处理API请求,从而产生的错误响应。

API网关提供默认的网关响应(default)。如果您需要自定义响应状态码或网关响应内容,可在API分组中新增网关响应,按照您自己的响应内容,符合JSON格式即可。

新增网关响应_API网关 APIG_用户指南_API管理_华为云

网关响应指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体的内容可以按需定制,包括增减字段内容。

说明:

  • 每个分组最多可新增4个网关响应。
  • 不论是默认网关响应“default”或是您自定义的网关响应,响应类型范围固定不可修改。您可以修改每种响应的状态码,以及响应内容。
  • 网关响应所定义的错误类型固定且不可修改,具体见网关错误响应类型说明。
  • 响应内容支持调用API网关运行时变量($context变量),具体见API网关运行时可获取变量。

API网关运行时可获取变量

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

运行时变量名称

描述

$context.apiId

API的ID

$context.appId

API调用者的凭据对象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

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

网关错误响应类型说明(知识补充,和文章内容无关)


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

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

错误说明

默认的响应状态码

详细说明

拒绝访问

403

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

自定义认证配置错误

500

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

自定义认证失败

500

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

自定义认证身份来源错误

401

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

认证失败

401

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

认证身份来源缺失

401

认证身份来源信息缺失

后端超时

504

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

后端不可用

502

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

默认4XX

-

其它4XX类错误

默认5XX

-

其它5XX类错误

未找到匹配的API

404

未匹配到API

请求参数错误

400

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

调用次数超出阈值

429

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

凭据未授权

401

使用的凭据未被授权访问该API

API网关运行时可获取变量

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

运行时变量名称

描述

$context.apiId

API的ID

$context.appId

API调用者的凭据对象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

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

HTTP常见的错误码


4xx:客户端发生了错误

5xx: 服务端发生了错误(客户端请求的参数都是正确的,但是服务端在解析处理的时候发生了错误)

400 500响应码,搞清楚这些响应码,搞清楚其含义,对于我们快速的定位问题非常有帮助。

响应码分类: 4xx(一)


• 400 Bad Request:服务器认为客户端出现了错误,但不能明确判断为以下哪种错误时使用此错误码。例如HTTP请求格式错误。(请求不合法)
 
• 401 Unauthorized:用户认证信息缺失或者不正确,导致服务器无法处理请求。
• 407 Proxy Authentication Required:对需要经由代理的请求,认证信息未通过代理
服务器的验证
• 403 Forbidden:服务器理解请求的含义,但没有权限执行此请求(对于服务器下面某个目录里面的文件访问可能没有权限,这个时候客户端就会收到forbidden)
• 404 Not Found:服务器没有找到对应的资源
• 410 Gone:服务器没有找到对应的资源,且明确的知道该位置永久性找不到该资源

响应码分类: 4xx(二)


• 405 Method Not Allowed:服务器不支持请求行中的 method 方法
• 406 Not Acceptable:对客户端指定的资源表述不存在(例如对语言或者编码有要
求),服务器返回表述列表供客户端选择。
• 408 Request Timeout:服务器接收请求超时
• 409 Conflict:资源冲突,例如上传文件时目标位置已经存在版本更新的资源
• 411 Length Required:如果请求含有包体且未携带 Content-Length 头部,且不属于chunk类请求时,返回 411

响应码分类: 4xx(三)


• 412 Precondition Failed:复用缓存时传递的 If-Unmodified-Since 或 If-
None-Match 头部不被满足
• 413 Payload Too Large/Request Entity Too Large:请求的包体超出服务器能处理的最大长度(在使用wordpress搭建博客的话,默认上传的附件只有2m,就是wordpress的插件,我们通常需要将默认的2M向上去调整,就不会得到413这样的错误了)
• 414 URI Too Long:请求的 URI 超出服务器能接受的最大长度
• 415 Unsupported Media Type:上传的文件类型不被服务器支持(比如wordpress站点拒绝exe可执行文件上传,防止有安全的风险)
• 416 Range Not Satisfiable:无法提供 Range 请求中指定的那段包体
• 417 Expectation Failed:对于 Expect 请求头部期待的情况无法满足时的
响应码

响应码分类: 4xx(四)


• 421 Misdirected Request:服务器认为这个请求不该发给它,因为它没有能力
处理。
• 426 Upgrade Required:服务器拒绝基于当前 HTTP 协议提供服务,通过
Upgrade 头部告知客户端必须升级协议才能继续处理。
• 428 Precondition Required:用户请求中缺失了条件类头部,例如 If-Match
• 429 Too Many Requests:客户端发送请求的速率过快

调用次数超出阈值

429

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

• 431 Request Header Fields Too Large:请求的 HEADER 头部大小超过限制
• 451 Unavailable For Legal Reasons:RFC7725 ,由于法律原因资源不可访问

响应码分类: 5xx(一)


• 5xx:服务器端出现错误
• 500 Internal Server Error:服务器内部错误,且不属于以下错误类型
• 501 Not Implemented:服务器不支持实现请求所需要的功能(当前请求的功能还没有去实现,需要服务器去升级或者添加相应的功能)
• 502 Bad Gateway:代理服务器无法获取到合法响应(在源服务器之间有代理服务器,但是代理服务器连接不到源服务器,或者说代理服务没有办法从源服务器中获取到合法的响应)
• 503 Service Unavailable:服务器资源尚未准备好处理当前请求(比如服务端做请求的限速,或者对用户的IP做并发连接的限制,当达到上限的时候,都有可能发送503)

响应码分类: 5xx(二)


• 504 Gateway Timeout:代理服务器无法及时的从上游获得响应(表示代理服务器和源服务器之间出现了超时,比如上传巨大的文件或者下载巨大的文件,但是我们代理服务器类似于nginx,它配置的超时时间是一分钟,一分钟之内源服务器还没有及时的响应它,那么代理服务器就会给客户端发送504,所以返回504表示代理服务器设置的超时时间可能过小)
• 505 HTTP Version Not Supported:请求使用的 HTTP 协议版本不支持
• 507 Insufficient Storage:服务器没有足够的空间处理请求
• 508 Loop Detected:访问资源时检测到循环
• 511 Network Authentication Required:代理服务器发现客户端需要进行身份验证才能获得网络访问权限

HTTP 响应行 错误类型响应码相关推荐

  1. 手动去设置HTTP响应行、响应头、响应体

    ①手动去设置HTTP响应行中的状态码,这里用到了response的setStatus(int sc);这个方法 package com.itheima.line;import java.io.IOEx ...

  2. HTTP 响应行及响应状态码

    响应行 响应行/状态行(status line):意思是服务器响应的状态. 响应报文里的起始行. 也由三部分组成 版本号:表示报文使用的 HTTP 协议版本,通常是 HTTP/1.1 状态码:一个三位 ...

  3. HTTP_响应消息_响应行_状态码

    2. 响应消息:服务器端发送给客户端的数据     * 数据格式:         1. 响应行             1. 组成:协议/版本 响应状态码 状态码描述             2. ...

  4. HTTP 响应的格式及状态码

    HTTP响应 服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应. 响应数据格式 HTTP响应由三部分组成:状态行.响应头 ...

  5. web核心 4-response响应对象 servletContext对象 响应行响应体 请求转发 重新定向 从服务器下载与上传资源 切换验证码 网站统计访问次数

    内容介绍 1 ServletContext对象2 response响应对象 ServletContext对象 概述 ServletContext:servlet的上下文对象(全局管理者) 一个项目有且 ...

  6. 通俗易懂。HTTP请求行、请求头、请求体、响应行、响应头、响应体详解

    一. HTTP请求报文解剖 HTTP Request :HTTP请求 Request Line:请求行 Header:请求头 Request Body:请求体 HTTP请求报文由3部分组成(请求行+请 ...

  7. 【QR Code Generator】开源免费响应式QRcdr二维码生成网站源码

    介绍: 开源免费响应式QRcdr二维码,一款基于PHP编写的二维码在线生成系统,只需点击几下就可以生成您的个人二维码,上传您的徽标或水印,选择自定义颜色,生成多种类型,选择一个图案并下载最终的二维码图 ...

  8. Vue响应式原理 vue源码(十一)

    前言 看过很多讲响应式的文章,大多都是告诉你们,有Observer,Dep,Wathcer类,Object.definePorperty,先会触发get中的dep.depend收集依赖,然后数据改变时 ...

  9. Android中使用logger打印完整的okhttp网络请求和响应的所有相关信息(请求行、请求头、请求体、响应行、响应行、响应头、响应体)

    如果你的项目中的网络请求库是Retrofit的话,他的底层封装的是OkHttp,通常调试网络接口时都会将网络请求和响应相关数据通过日志的形式打印出来.OkHttp也提供了一个网络拦截器okhttp-l ...

最新文章

  1. ios键盘done中文_关于IOS键盘的一些调用心得与坑
  2. C++构造函数与析构函数
  3. glib 2.0 arm linux,为ARM编译Glib
  4. 1640. Check Array Formation Through Concatenation 能否连接形成数组
  5. BZOJ4388 : JOI2012 invitation
  6. 这可能是现实版程序员!
  7. 值传递,引用传递,指针传递
  8. html5中如何使图片滚动条,如何使RMarkdown代码块中出现垂直滚动条(html视图)
  9. tomcatserver管理界面username和password忘记
  10. python-《Python发展前景》
  11. 浅谈前后端分离与实践 之 nodejs 中间层服务
  12. 电源 PFC(功率因数校正)电路拓扑,共计100多份,内含A PFC,连续断续,交错,维也纳,各功率段的PFC电路
  13. C# Stream篇(五) -- MemoryStream
  14. 斑马Zebra LP2844 打印机驱动
  15. 计算机应用技术投稿流程,计算机技术与发展投稿有何要求?
  16. 计统大作业Hello P2P
  17. GitHub分享的微软开源计算器项目
  18. 保研面试中常见的英语问题有哪些?
  19. 解决“该项目不在请确认该项目位置,然后重试” 文件无法删除问题
  20. centos挂载光驱设备

热门文章

  1. 如何让ie的session不共享,如每打开一个新ie窗体都是单独的session,用于单计算机登陆不用账号
  2. 使用vuejs+epubjs实现电子书阅读器的基本功能
  3. 谐云魏欢:浅谈云原生边缘计算框架演进
  4. 情话暖心短句(程序猿用得着拿走不谢)
  5. php_curl扩展的使用
  6. 【Ubuntu】安装好Vmvare tools之后不能拖拽复制粘贴
  7. Java 实现简单多银行存钱取钱
  8. css实现文字颜色适配背景
  9. linux 嵌入式 快照_技术|定制嵌入式 Linux 发行版
  10. excel改变列的位置