错误码
当出现错误时,你会收到对应的错误码,本文档将介绍和风天气API的错误码和错误信息。
提示:目前同时存在两种错误码版本,我们将陆续从v1版本迁移到v2版本,在此期间你会发现不同的API可能返回了不同版本的错误码。
注意:你应该妥善的处理遇到的错误,当错误发生时,请暂停请求并进行排查。你不应该放任错误的继续发生,否则这些错误的请求看起来是一种DDoS攻击,极端情况下,我们的安全策略可能冻结你的帐号。
错误码v2
v2版本将错误进行了细分和更加详细的描述,以便用户可以更容易了解错误的原因,同时也将HTTP Status Code与错误码保持了一致。
错误码包括以下类型:
INVALID PARAMETER
HTTP response status code: 400
错误的参数,一般指的是传入了错误的参数值,具体错误的参数请参考响应中的error.invalidParams
。
MISSING PARAMETER
HTTP response status code: 400
缺失参数,当一些必选参数没有传递时将报错,具体缺失的参数请参考响应中的error.invalidParams
。
NOT FOUND
HTTP response status code: 400
没有找到所查询的数据。例如查询一个不存在的城市或者一个错误的LocationID,此时你应该检查并更改查询的内容。
DATA NOT AVAILABLE
HTTP response status code: 400
数据暂时不可用。当你查询的数据超过我们支持的范围后将收到此错误码,例如查询一个地点的空气质量,而我们还不支持这个地点的空气质量,请尝试其他地点进行查询。
UNAUTHORIZED
HTTP response status code: 401
身份认证失败,你需要检查你的KEY或Token,考虑到安全因素,我们不会返回具体错误的原因。
NO CREDIT
HTTP response status code: 403
你的帐号内没有足够的可用额度、节省计划或其他额度,请求被拒绝。你需要先增加可用额度或购买其他额度之后再继续请求数据。
UNPAID
HTTP response status code: 403
由于你帐号内有未支付的欠款账单,请求被拒绝。你需要先完成欠款账单的支付再继续请求数据。
SECURITY RESTRICTION
HTTP response status code: 403
当前请求违反了你设置的请求限制,请求被拒绝,考虑到安全因素,我们不会返回具体违反了哪些请求限制。请检查:
- 该请求是否与你的请求限制有冲突
- 你的请求限制是否合理
- 若果请求不是你发送的,请考虑你的凭据可能已经泄露
ERROR HOST
HTTP response status code: 403
由于使用了错误的Host和凭据,请求被拒绝。例如使用免费订阅的凭据请求标准订阅服务,或使用标准订阅的凭据请求免费订阅服务。
ACCOUNT SUSPENSION
HTTP response status code: 403
由于用户帐号被冻结,请求被拒绝。了解帐号冻结。
FORBIDDEN
HTTP response status code: 403
你暂时无权限请求这个数据。你可以提交工单向我们了解相信信息。
404
HTTP response status code: 404
输入了错误的路径或错误的路径参数,无法找到该资源。请注意,404错误不会返回response body。
TOO FAST
HTTP response status code: 429
请求速度过快,超过了QPM限制。你需要暂停一小段时间再进行重试,同时如果你有多个设备,这个暂停的时间应该错开。请参考指数退避算法。
OVER FREE DAILY LIMIT
HTTP response status code: 429
超过了每日的免费请求量,此时你应该停止发送请求,等待到第二天再试。
OVER MONTHLY LIMIT
HTTP response status code: 429
对于包年包月订阅用户,当本月请求量超过限额后将收到此错误码,请等待至下个月再试,或者联系你的商务经理升级订阅方案。
UNKNOWN ERROR
HTTP response status code: 500
我们的服务发生了未知故障,请提交工单与我们联系。
响应
HTTP/2 400
Content-Type: application/problem+json
{
"error": {
"status": 400,
"type": "https://dev.qweather.com/docs/resource/error-code/#invalid-parameters",
"title": "Invalid Parameters",
"detail": "Invalid parameters, please check your request.",
"invalidParams": [
"lang"
]
}
}
error.status
对应这个错误的HTTP status codeerror.type
这是一个URL用于标识错误类型error.title
对错误的简短描述error.detail
对错误的详细描述error.invalidParams
标识错误或缺失的参数
错误码v1
通过API接口中的code
字段,可以获取到当前请求的状态,判断请求是否成功或出现错误。
代码 | 说明 |
---|---|
200 | 请求成功 |
204 | 请求成功,但你查询的地区暂时没有你需要的数据。 |
400 | 请求错误,可能包含错误的请求参数或缺少必选的请求参数。 |
401 | 认证失败,可能使用了错误的KEY、KEY的类型错误(如使用SDK的KEY去访问Web API)。 |
402 | 超过访问次数或余额不足以支持继续访问服务,你可以充值、升级访问量或等待访问量重置。 |
403 | 无访问权限,可能是绑定的PackageName、BundleID、域名IP地址不一致,或者是需要额外付费的数据。 |
404 | 查询的数据或地区不存在。 |
429 | 超过限定的QPM(每分钟访问次数),请参考QPM说明 |
500 | 无响应或超时,接口服务异常请联系我们 |
响应
HTTP/2 200
content-type: application/json
{
"code": "401"
}
1 vs 2
你可以简单参考下表了解v1和v2的差异,并快速的进行迁移。但是请注意,在我们完全迁移到v2之前,你还需要对v1进行兼容性设计。
v1 | v2 | |
---|---|---|
HTTP Status Code | 200 | 根据不同错误响应对应的HTTP Status Code |
错误分类 | ❌ | ✅ |
错误描述 | ❌ | ✅ |
识别错误参数 | ❌ | ✅ |