阿波罗链接重试400错误的意外行为[关闭]

Posted

技术标签:

【中文标题】阿波罗链接重试400错误的意外行为[关闭]【英文标题】:unexpected behavior of apollo link retry on 400 error [closed] 【发布时间】:2020-06-12 14:11:42 【问题描述】:

description: Attempt an operation multiple times if it fails due to network or server errors.

我使用 apollo-link-retry 来重试发生服务器错误(5xx)时的调用。 但是当发生 400 错误(错误请求)时,它会重试,预计只会在服务器错误中重试。 网络错误是否意味着所有客户端错误(4xx)和服务器错误(5xx)? 如何停止重试 5xx 以外的错误?

【问题讨论】:

问题清楚了,请重新打开。 【参考方案1】:

在 Apollo Client 的上下文中,有两种类型的错误 - GraphQL 错误(在响应中的 errors 数组中返回的错误)和网络错误。任何返回状态不是 200 的请求都被认为遇到了网络错误。默认的 RetryLink 配置没有那么精细——它只关心是否发生了网络错误,而不关心发生了什么样的错误。如果您希望重试某些错误,请为attempts 配置提供retryIf 函数,如docs 所示:

  attempts: 
    retryIf: (error, _operation) => 
      // return true or false depending on the properties on error
    
  
)

【讨论】:

你的意思是说除了2xx之外的所有状态码都被认为是网络错误? 我猜技术上是any status 300 or above。

以上是关于阿波罗链接重试400错误的意外行为[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

阿波罗客户端- [未处理的承诺拒绝:错误:响应不成功:收到状态代码 400]

源 GraphQL API:HTTP 错误 400 错误请求

创建 Android OAUTH 客户端失败:“发生意外错误。请稍后重试。(4800001)”

webSocket 握手期间的错误意外响应代码:400

由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表

WCF - 远程服务器返回意外响应:(400)错误请求