阿波罗链接重试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)”
由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表