跳转到主要内容
GraphQL 响应对成功、应用层错误,以及与声明类型不匹配的变量(BAD_USER_INPUT)统一使用 HTTP 200。请查看 errors 数组以了解具体发生了什么。在请求执行前就被拒绝的其他请求会使用其他状态码,例如超出请求速率时返回 429,查询与 schema 不匹配或超出查询成本限制时返回带有 GRAPHQL_VALIDATION_FAILED 的 400。无法解析的查询,或超出 token 限制的查询,会返回带有相同 GRAPHQL_VALIDATION_FAILED 代码的 500。这属于被拒绝的查询,而非服务器故障,因此不要重试。

错误结构

错误代码按区域进行命名空间划分:
  • AUTH-* —— 身份验证与令牌问题
  • BS-* —— 通用业务/校验错误
  • GC-* —— 礼品卡操作
  • VC-* —— 虚拟卡操作

领域错误代码

Fluz 使用带前缀的错误代码,以便你可以根据出错的子系统进行分支处理。 不在此列表中的代码将显示为通用的校验错误或服务器错误。

故障排查

  1. 检查 AUTH-* 的作用域。 这几乎总是意味着令牌铸造时未包含所需的作用域;请铸造一个新令牌。
  2. AUTH-0002在重试 GC-* 之前重新查询。 优惠和库存变化频繁——请获取最新优惠后重试。
  3. 重试业务错误前先重新查询。 GC-0009(库存)等错误意味着当前状态已发生变化——不要使用过期不要重试校验错误。 VC-* 和 BS-* 这类具有 4xx 性质的代码,在你修正输入或余额之前,重试会得到相同的失败结果。
  4. 使用退避和抖动重试瞬时性服务器错误重试 5xx / 网络错误时使用抖动。 涉及资金变动的 mutation 会进行去重;请参见幂等性。