网关指南: https://help.aliyun.com/document\_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl
网关控制台: https://apigateway.console.aliyun.com/?spm=5176.doc42740.2.2.Q4z5ws#/cn-hangzhou/apis/list
一、如何获取错误信息
所有的 API 申请只有达到了网关,网关就会返回申请后果信息。
用户须要查看返回后果的头部,即 Header 局部。其中 X-Ca 结尾的均为网关返回,比拟重要信息是:
在 Header 中取得 X-Ca-Error-Message 能够根本明确报错起因,而 X-Ca-Request-Id 能够用于提供给这边的反对人员,供反对人员搜寻日志。
二、返回值为空
HTTP/HTTPS 申请的返回后果有 HttpCode、Header、Body 三局部。当申请报错时,因为没有进入业务逻辑,所以返回的 Body 可能为空,体现为“返回值为空”,但实际上,重要信息都在 Header 外面。
用户发动的 API 申请只有可能达到网关,就会返回胜利 / 谬误的后果信息。
重要的返回信息都在 Header 外面,以 X -Ca 结尾的为网关返回的信息。其中较次要的为上面的几个信息:
所以如果发送申请后,发现返回值为空,那么看一下返回的 Header 信息。如果申请达到网关就谬误返回了,那么 Body 为空很失常,会体现为返回值为空,然而在 Header 外面会有重要信息。
如果 Header 也为空,那么阐明申请没有达到网关,请自行查看网络情况等。
各种语言获取和查看 HTTP/HTTPS 头部信息的办法均可在网上查问到。
三、HTTPS 证书报错
谬误提醒
调用 HTTPS 接口呈现证书认证谬误或者提醒证书曾经过期。
起因及解决方案
1\. 证书不非法
API 提供者应用的证书其余非主流机构颁发的证书,此类证书应用浏览器拜访是没有问题的,因为浏览器会自动更新根证书。但老版本操作系统的根证书对这些机构(证书颁发机构)的不信赖或者信赖工夫曾经过期。
解决方案
- 降级客户端根证书。如:Java+Linux 降级 OpenSSL 客户端即可,其余操作系统 + 编程语言,请降级编程语言中 HTTPS 应用的根证书。
- 分割 API 提供者,要求其更换兼容性更好的支流 SSL 证书。
- 程序中疏忽查看 SSL 证书有效性(不举荐),疏忽后会有申请被劫持的平安危险。只在与 API 提供商无奈提供兼容性更好的支流 SSL 证书,且平安危险可控的前提下,能够思考应用此办法。
2\. API 提供者的 SSL 证书过期
提供者的 SSL 证书过期。
解决方案
- 分割 API 提供者,要求其更换 SSL 证书。
- 程序中疏忽查看 SSL 证书有效性(不举荐),疏忽后会有申请被劫持的平安危险。只在与 API 提供商无奈提供兼容性更好的支流 SSL 证书,且平安危险可控的前提下,能够思考应用此办法。
四、错误代码表
公共错误码
报错场景
错误码
谬误提醒
状态码
倡议
Domain 不正确(通过 Domain 找不到 Product)。
InvalidProduct.NotFound
Cannot find product according to your specified domain.
404
请查看调用的域名或产品配置中的域名是否正确。
API 找不到
该 API 是 Private 类型,名单中没有该用户。
InvalidApi.NotFound
Specified api is not found,
please check your url and method.
404
请查看调用的 API 是否正确,需注意大小写,确认是否配置了访问控制。
API 必须应用 HTTPS 协定。
InvalidProtocol.NeedSsl
Your request is denied as lack of ssl protect.
400
请查看 API 配置,是否配置成只反对 https。
必填参数没有填({}中替换成相应的参数名)。
Missing{ParameterName}
{ParameterName} is mandatory for this action.
400
查看调用时是否填写提醒的了此参数。
AccessKeyId 找不到
InvalidAccessKeyId.NotFound
Specified access key is not found.
404
请查看调用时是否应用了正确的 AccessKeyId。
AccessKeyId 被禁用。
InvalidAccessKeyId.Inactive
Specified access key is disabled.
400
查看 AK 是否可用,或是否与所在环境匹配。
工夫戳格局不对(Date 和 Timestamp)
InvalidTimeStamp.Format
Specified time stamp or date value is not well formatted.
400
查看工夫戳
用户工夫和服务器工夫不在 15 分钟内
InvalidTimeStamp.Expired
Specified time stamp or date value is expired.
400
查看工夫戳
SignatureNonce 反复
SignatureNonceUsed
Specified signature nonce war used already.
400
MD5 校验不通过(ROA)
ContentMD5NotMatched
Specified content md5 is not matched with your request body.
400
返回值格局不正确(Format 不反对)
InvalidParameter.Format
Specified parameter format is not valid.
400
反对 XML/JSON,ROA 形式反对 application/json、application/xml。
返回值格局不正确(Accept 不反对)
InvalidParameter.Accept
Specified parameter accept is not valid.
400
参数值校验不通过
Invalid{ParameterName}
Specified parameter {ParameterName} is not valid.
400
Http 申请办法不反对(API 上回配置容许的申请办法)
UnsupportedHTTPMethod
Specified signature is not matched with our calculation.
400
签名办法不反对
InvalidSignatureMethod
Specified signature method is not valid.
400
服务器端地位谬误
InternalError
The request processing has failed
due to some unknown error.
500
服务临时不可用(底层服务不可用)
ServiceUnavailable
The request has failed due to a temporary failure of the server.
503
倡议查看 API 配置中的 Isp 协定形容,并查看接入方提供的服务是否失常
签名不通过
SignatureDoesNotMatch
Specified signature is not matched with our calculation.
400
签名不通过,请参照 签名验证
参数取值不匹配(url 和 body 体中的参数不匹配)
ValueMismatch.{ParameterName}
Multi-specified parameter {ParameterName} conflicts with each other.
400
用户这个时段的流量曾经超限
Throttling.User
Request was denied due to user flow control.
API 这个时段的流量曾经超限
Throttling.API
Request was denied due to api flow control.
指定的 content-length 与 body 长度不匹配
ContentLengthDoesNotMatch
Specified content-length is not matched with the length of body.
400
指定的参数反复
RepeatedParameter. {ParameterName}
Specified parameter is repeated.
400
用户这个时段的流量曾经超限
Throttling.User
Request was denied due to user flow control.
400
API 这个时段的流量曾经超限
Throttling.API
Request was denied due to api flow control.
400
短少 AccessKeyId
MissingSecurityToken
SecurityToken is mandatory for this action.
400
当 AccessKeyId 以 STS. 结尾时,走 Token 的鉴权逻辑。如果 AccessKeyId 以 STS. 但未提供 SecurityToken 参数 (包含 RPC 和 ROA) 时报此谬误
SecurityToken 过期
InvalidSecurityToken.Expired
Specified SecurityToken is expired.
400
需查看 SecurityToken
客户端谬误(凋谢 API)
错误代码
形容
Http 状态码
语义
解决方案
Repeated%s
The specified %s is repeated.
400
某参数反复(%s 是占位符,理论调用会给出明确的参数名或提醒。)
倡议依照提醒批改反复的参数后重试。
RepeatedCommit
Resubmit request.
400
申请反复
请不要频繁提交申请。
Missing%s
The %s is mandatory for this action.
400
短少参数 %s
依据具体返回补充短少的参数,重试申请。
MissingAppIdOrAppOwner
AppId or AppOwner must have a valid value.
400
短少参数 AppId 或者 AppOwner
参数 AppId 和 AppOwner 不能同时为空。
Invalid%s
The specified parameter %s value is not valid.
400
参数有效
依据返回提醒的具体参数,查看相干参数束缚,批改后重试。
NotFound%s
Cannot find resource according to your specified %s.
400
找不到资源
依据指定的参数 %s 找不到资源,倡议查看 %s 是否正确。
InvalidFormat%s
The specified parameter %s value is not well formatted.
400
参数格局谬误
倡议依据理论返回提醒,查看 %s 的格局要求,批改后重试。
Duplicate%s
The specified parameter %s value is duplicate.
400
参数反复
某申请参数不容许反复,倡议查看修改后重试。
DependencyViolation%s
The specified %s has %s definitions.
400
参数依赖谬误
指定参数被依赖,不能随便删除,请先解除依赖。
Forbidden%s
Not allowed to operate on the specified %s.
403
无权操作 / 操作禁止
您无权执行该操作。
NoPermission
User is not authorized to operate on the specified resource.
403
无权操作
RAM 鉴权不通过。
ExceedLimit%s
The specified %s count exceeds the limit.
400
超出个数限度
个别指用户账户下创立的 API、API 分组或者 APP 超出个数限度。
UserNotFound
The specified user can not be found.
404
指定用户找不到
依据输出的用户信息找不到该用户。
DomainCertificateNotFound
Cannot find the domain certificate.
400
指定域名证书不存在
倡议查看传入的证书 ID 及名称。
DomainNotResolved
The specified domain has not been resolved.
400
指定域名未解析
须要将指定域名 CNAME 解析到分组的二级域名上,能力实现绑定。域名解析是在用户域名购买的网站上操作。
InvalidICPLicense
The specified domain have not got ICP license, or the ICP license does not belong to Aliyun.
400
域名备案不合格
要绑定的域名须要在阿里云做首次备案,曾经在其余零碎做备案的,须要在阿里云备案接入。备案接入须要获取备案号,在阿里云有 ECS 且具备公网 IP 的,每个 ECS 有 5 个备案号。
Invalid%s.LengthLimit
The parameter %s length exceeds the limit.
400
长度超限
参数 %s 超出长度限度,倡议修改后重试。
InvalidApiDefault
The ApiDefault value exceeds limit.
400
流控 API 默认值超过限度值
该值数值不能超过 1 亿,与单位无关。如需上调请提工单申请。
InvalidAppDefault
The AppDefault value must smaller than the UserDefault and ApiDefault.
400
AppDefault 的值不合乎规定
该值须要小于 API 流控值和用户流控值。
InvalidUserDefault
The UserDefault value must bigger than the AppDefault and smaller than the ApiDefault.
400
UserDefault 的值不合乎规定
该值须要小于 API 流控值并大于 APP 流控值。
InvalidParamMapping
Parameters must be fully mapped.
400
参数映射有效
创立 API 时,前后端参数映射须要是全映射。即每个入参都须要配置后端参数名称。
InvalidOwnerAccount
OwnerAccount is invalid.
400
APP 所有者账号有效
个别为操作受权时,输出指标用户的阿里云邮箱账号,该账号有效。倡议查看修改后重试。
ServiceForbidden
Your Gateway service is forbidden by risk control.
400
API 网关服务被风控(应该使用户被风控吧)
请留神不要频繁申请,倡议稍后重试。若重试后仍未解决,可提工单征询。
ServiceUnOpen
Your Gateway service has not been opened.
400
服务未开明
倡议到阿里云官网开明一下 API 网关服务。
ServiceInDept
Your API Gateway service is in dept.
400
(您的 API 网关)服务欠费
充值或者结算后从新开始应用。
EqualSignature
The new signature is the same as the old.
400
新密钥与旧的相等
批改后端签名密钥时,新设置的 Key 和 Secret 不能跟原来的一样。
CertificateNotMatch
The domain does not match the one in the certificate.
400
证书不匹配
指定域名与证书内域名不匹配。
CertificateKeyNotMatch
The certificate private key does not match the public key.
400
证书密钥不匹配
证书的公钥和私钥不匹配。
PrivateKeyEncrypted
The certificate private key is encrypted, please upload the unencrypted version.
400
密钥不能加密
证书私钥加密了,要求上传不加密的版本。
CertificateSecretKeyError
The certificate private key is invalid.
400
证书私钥谬误
倡议查看后从新传入。
InvalidApiServiceAddress
The specified service address is not valid.
400
API 后端服务地址有效
配置的 API 后端服务地址有效。
客户端谬误(调用 API)
错误代码
Http 状态码
语义
解决方案
Throttled by USER Flow Control
403
因用户流控被限度
个别是因为 API 服务商设置的用户流控值导致被流控,能够分割 API 服务商协商放宽限度。
Throttled by APP Flow Control
403
因 APP 流控被限度
个别是因为 API 服务商设置的 APP 流控值导致被流控,能够分割 API 服务商协商放宽限度。
Throttled by API Flow Control
403
因 API 流控被限度
个别是因为 API 服务商设置的 API 流控值导致被流控,能够分割 API 服务商协商放宽限度。
Throttled by DOMAIN Flow Control
403
因二级域名流控被限度
间接拜访二级域名调用 API,每天被拜访次数下限 1000 次。
TThrottled by GROUP Flow Control
403
因分组流控被限度
每个分组有 QPS 限度,能够分割 API 服务商反馈。
Quota Exhausted
403
调用次数已用完
购买的次数已用完。
Quota Expired
403
购买次数已过期
购买的次数曾经过期。
User Arrears
403
用户已欠费
请尽快充值续费。
Empty Request Body
400
body 为空
请查看申请 Body 内容。
Invalid Request Body
400
body 有效
请查看申请 Body。
Invalid Param Location
400
参数地位谬误
申请参数地位谬误。
Unsupported Multipart
400
不反对上传
不反对上传文件。
Invalid Url
400
Url 有效
申请的 Method、Path 或者环境不对。请参照谬误阐明 Invalid Url。
Invalid Domain
400
域名有效
申请域名有效,依据域名找不到 API。请分割 API 服务商。
Invalid HttpMethod
400
HttpMethod 有效
输出的 Method 不非法。
Invalid AppKey
400
AppKey 有效或不存在
请查看传入的 AppKey。留神左右空格的影响。
Invalid AppSecret
400
APP 的 Secret 谬误
查看传入的 AppSecret。留神左右空格的影响。
Timestamp Expired
400
工夫戳过期
请核查申请零碎工夫是否为规范工夫。
Invalid Timestamp
400
工夫戳不非法
请参照 申请签名阐明文档。
Empty Signature
404
签名为空
请传入签名字符串,请参照 申请签名阐明文档。
Invalid Signature, Server StringToSign:%s
400
签名有效
签名有效,参照 Invalid Signature 谬误阐明
Invalid Content-MD5
400
Content-MD5 值不非法
申请 Body 为空,但传入了 MD5 值,或 MD5 值计算错误。请参照 申请签名阐明文档。
Unauthorized
403
未被受权
APP 未取得要调用的 API 的受权。请参照谬误阐明 Unauthorized。
Nonce Used
400
SignatureNonce 已被应用一次
SignatureNonce 不能被重复使用。
API Not Found
400
找不到 API
传入的 GroupId、Stage 等参数不正确,或已下线。
服务器端谬误(凋谢 API)
错误代码
形容
Http 状态码
语义
解决方案
ServiceUnavailable
The request has failed due to a temporary failure of the server.
503
服务不可用
倡议重试。
InternalError
The request processing has failed due to some unknown error, exception or failure.
500
外部谬误
倡议重试。
服务器端谬误(调用 API)
错误代码
Http 状态码
语义
解决方案
Internal Error
500
API 网关外部谬误
倡议重试。
Failed To Invoke Backend Service
500
底层服务谬误
API 提供者底层服务谬误,倡议重试,如果重试屡次依然不可用,可分割 API 服务商解决。
Service Unavailable
503
服务不可用
倡议稍后重试。
Async Service
504
后端服务超时
倡议稍后重试。
五、Invalid Signature
谬误起因
客户端与服务端计算的签名不匹配导致的。
解决方案
当签名不匹配时网关会通过 HTTP Response Header 中的 X-Ca-Error-Message 返回服务端参加签名计算的 StringToSign。
StringToSign 是用户申请前须要拼接的一个用于计算签名的字符串,在文档:【申请签名阐明文档】查看具体阐明。
客户端只需打印出本地本人拼接的 StringToSign 进行比照,找出哪里不同,针对性的解决,如果应用的官网提供的调用 Demo,能够到签名计算的工具类中找出计算签名前的 StringToSign 打印进去即可进行比照。
因为 HTTP Response Header 中不容许呈现换行符,因而返回后果中的 StringToSign 换行符都曾经被抹去。请参照文档正当比对。
如果服务端 StringToSign 与客户端统一,请再查看应用的 AppKey、AppSecret 是否正确,尤其留神是否额定谬误增加了空格等不容易发现的字符。
六、Invalid Signature
谬误起因
申请传入的 HTTP Method 或者 Path 不正确,或者申请指定的环境(X-Ca-Stage)不正确。
如指定调用 TEST 环境的 API,但 API 并未被公布到测试。
留神:
- 申请时不指定环境,默认为拜访 RELEASE 环境。
- 对 API 定义有批改,须要从新公布能力失效。许多呈现这个谬误的都是因为批改了 Path 没公布不失效,用新 Path 申请报错。
解决办法
别离查看上述三个因素:HTTP Method、Path、环境。
- API 阐明中要求用 POST 则不能用 GET 申请。Method 要统一。
- Path 要与以后运行的统一。凋谢 API 的用户常常批改之后不公布,导致调用失败。
- 指定环境要正当。在申请的 Header 里有个参数 X-Ca-Stage,取值 TEST/PRE/RELEASE,别离指向测试和线上环境,不传入该参数则默认是线上。
- 更多参数及申请阐明,参见 API 调用示例
七、Unauthorized
谬误起因
申请 API 时,应用的 AppKey 所属于的 APP 未取得受权。无权调用 API。
解决办法
受权失效的决定因素有:APP、API、环境、已受权
- 如果是凋谢 API 的用户本人测试,则须要在 API 网关控制台,实在创立 APP,而后依据 AppId 在 API 列表页操作受权。即凋谢 API 的用户自测时,其实是本人须要给本人创立的 APP 受权。
- 如果是购买了 API 的用户,则在 APP 详情页能够查看该 APP 曾经被受权的 API,若没有要调用的 API,则自行操作受权。
- 如果是应用了合作伙伴的 API,没有购买行为的。则分割合作伙伴。您须要提供 AppId,而后由 API 提供者操作受权。
- 受权关系是有环境属性的,即 APP、API 都是同一个的状况下,受权的环境和申请的环境也要雷同。受权了某 API 在 A 环境的权限,然而也不能调用该 API 在 B 环境中的服务。申请时的环境等参数指定,请参见【API 申请示例】。
- 最重要的一点是,确认分明是否用错了 APP,是否调用错了 API。因为 API 和 APP 较多,很多用户因为搞混了而没能调用胜利。比方受权了 APP A,然而调用时候用的是 APP B,请认真排查。
八、后端服务调不通
- 须要查看您录入的后端服务地址是否正确。
- 须要保障您的后端服务能够被网关拜访到。
- 如果应用的是内网 IP,请保障您的后端服务于您的 API 处于同一地区。
- 查看您 API 定义的“后端超时”工夫。
在 API 定义时会要求您录入一个超时工夫,当您的后端服务没有在您指定的工夫内返回时,API 网关依然会提醒您无奈链接后端服务。您能够依据后端服务的理论耗时对”后端超时”进行调整,最大反对 30000ms。留神:单位是 ms(毫秒)
-
如后端服务在 Ecs,请查看平安组设置,是否能够被内部拜访。请保障平安组能够被 API 网关所在的 IP 段拜访。
-
设置办法点击链接:设置 ECS 平安组
跳转至:
在发送调用申请前,请调整如下配置项,其余项为选填,如无特殊要求,请不要改变。- RegionId, 区域 ID,请填写资源所在的区域 ID, 例如:cn-shenzhen、cn-shanghai
- PortRange:端口,若后端服务 HTTP 为:80/80,HTTPS:443/443
-
NicType:网络类型,取值:
- internet:外网
- intranet:内网
- 若以如上述链接进入,则曾经为您默认设置了:intranet(内网)
- SourceCidrIp: 容许的源 IP 地址范畴,以下地址为 API 网关的进口 IP,请辨别区域填写
注:局部区域的 API 网关存在多个进口 IP 段,均须要退出平安组(每次操作只能增加一个 IP 段,多个 IP 段的区域需反复执行操作),增加时请留神内、外网。
-
区域
内网
外网
华北 1(青岛)
10.151.203.0/24
华北 2(北京)
10.152.167.0/24
123.56.213.0/24
华南 1(深圳)
10.152.27.0/24
120.76.91.0/24
华东 1(杭州)
10.152.29.0/24
10.152.30.0/24
114.55.70.0/24
华东 2(上海)
10.152.163.0/24
10.152.164.0/24
11.192.97.0/24
11.192.98.0/24
11.192.96.0/24
139.224.92.0/24
139.224.92.0/24
139.224.4.0/24
香港
10.152.161.0/24
10.152.162.0/24
47.91.171.0/24
47.89.61.0/24
亚太西北 1(新加坡)
10.152.165.0/24
10.152.166.0/24
11.192.152.0/23
11.193.8.0/24
11.193.9.0/24
47.88.235.0/24
47.88.147.0/24
-
-
-
- 填写实现后,点击发送申请,实现设置。
-
当之返回一个 RequestID 时,示意设置胜利
确认增加是否胜利
能够到控制台 -【ECS 控制台】-【平安组】- 找到相应平安组,点击查看“平安组规定”的“内网入方向”或者“公网入方向”。 -
九、api 平安
- 如何保障网关到后端服务器的调用平安?
- 更换后端密钥是否须要公布 API?
- 如何不中断服务更换后端密钥?
- 如何给指定人凋谢 API?
- 对并发的限度是怎么样的?
十、API 定义
- Path 与后端服务地址中的动静参数名称、程序是否必须保持一致?
- 为什么无奈调通我的后端服务?
- 用户传了一个未定义的参数,网关将如何解决
- 后端服务是否能够应用 HTTPS
- 服务信息是什么
- API 根底定义是什么
- 为什么要填写 API 形容
- API 类型是什么
- API 名称是什么
- API 更新是否会有提早
- 一个分组最多能够绑定 5 个已备案的域名
- 如何使您的 API 反对 HTTPS?
- 后端服务地址如何录入?
- 为什么要定义参数?
- 参数定义是必须的吗?
- 不定义参数网关如何解决?
- 参数定义蕴含什么?
- 能够对参数做哪些限度?
- Path 是什么?
- 为什么会提醒我 Path 抵触?
十一、产品阐明
- VPC 下的用户应用 API 网关有什么要求?
- 有没有节点、可用区的要求?
- 申请用户的资格是什么?账号下是否须要什么业务?
- 产品是否能够降级、降配,流程是什么?
- 产品应用是怎么免费的?
- 产品在控制台的治理都有什么?如何治理?
- 金融云和微金融用户能够购买么?
- 产品利用场景及作用
- 产品购买时长是什么?一个账号购买的有限度么?
- 这个产品能够应用平安产品吗?能够在 slb 上配置吗?
- 网关反对百倍抵偿吗?
- 反对退款吗,如何操作?
- 反对在线协定吗?如果是线下协定如何操作?
- 产品续费到期暂停工夫、删除工夫
十二、调用 api
- APP 是什么,怎么从用户理论的利用关联到咱们定义的 APP,理论利用是挪动端还是 web 端?
- 挪动端的 AppKey 平安怎么保障?
- 如何指定调用环境?
- 为什么 API 无奈调用?
- 如何无效避免 API 的重放攻打?
十三、分组相干
- 我能够创立多少 API 分组?
- 云 API 部署在哪些地区?
- 该怎么抉择分组地区?
- 二级域名是什么,有什么应用限度?
十一、产品阐明
如何找到已购买的 API
更新工夫:2017-06-17 14:10:07 分享:
您在 API 市场上购买 API 之后,即实现 API 的主动受权。您能够在治理控制台寻找您都曾经购买的 PI。
- 关上云市场,在右上角点击【买家核心】-【\[进入治理控制台 \]】
(https://market.console.aliyun.com/imageconsole/index.htm“进入治理控制台”)
- 在左侧菜单,点击【API】即可,如图:
十四、监控与告警
- API 监控的时效性
- API 监控的维度
- 如何查看 API 的运行状况
十五、相干协定
阿里云 API 网关试用服务协定
十六、域名相干
- 域名绑定多久能失效?
- 如何应用一个自有域名拜访 API?
- 域名是不是须要在[阿里云备案能力用于凋谢 API?](https://help.aliyun.com/knowl…
- 如何解析域名?
- 分组能够绑定几个域名?
转载于:https://www.cnblogs.com/lexia…