如何在 graphql_flutter 中重试对 GraphQLError 的请求
Posted
技术标签:
【中文标题】如何在 graphql_flutter 中重试对 GraphQLError 的请求【英文标题】:How to retry a request on GraphQLError in graphql_flutter 【发布时间】:2020-08-25 18:12:45 【问题描述】:当 graphql 响应有一些特定错误时,我想重试 graphql 请求。 我当前的代码:
QueryResult result = await client.query(
QueryOptions(
documentNode: gql(queries.getNextEpisode),
variables: <String, dynamic>
'id': id,
'keyType': 'POSTER',
,
),
);
if (result.hasException &&
result.exception.graphqlErrors
.any((element) => element.message.contains("401")))
// retry the request
我尝试了 retry 包,但我认为它只有在抛出异常时才有效,我认为这里不是这种情况。
我正在使用graphql_flutter: ^3.0.0
。
【问题讨论】:
你解决了吗? 不,很遗憾 【参考方案1】:为此,您必须使用fresh_graphql/fresh_graphql.dart 包。
_initFreshLink()
_freshLink = FreshLink<OAuth2Token>(
tokenStorage: _easyInMemoryTokenStorage,
refreshToken: _refreshToken,
shouldRefresh: (FetchResult result)
var hasAuthError = result.errors != null &&
result.errors
.where((e) =>
e['extensions'] != null &&
e['extensions']['code'] != null &&
e['extensions']['code'] == 'UNAUTHENTICATED')
.toList()
.length !=
0;
return hasAuthError;
,
)..authenticationStatus.listen(print);
【讨论】:
以上是关于如何在 graphql_flutter 中重试对 GraphQLError 的请求的主要内容,如果未能解决你的问题,请参考以下文章