You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React的AWS AppSync客户端中禁用离线时mutation自动请求

AppSync 禁用网络请求自动重试解决方案

核心原因说明

disableOffline: true 仅会关闭 AppSync 的离线持久化队列功能,不会影响 SDK 内置的网络请求重试策略,所以离线/网络异常时还是会触发默认的 3 次左右重试,之后才抛出错误。

禁用自动重试的实现方法

AppSync JS SDK 底层基于 Apollo Client 实现,你需要额外配置重试规则,即可实现请求失败立即抛错的效果,两种常用方案:

方案一:全局配置无重试策略(推荐,完全匹配 REST 调用表现)

创建 AppSync 客户端时覆盖默认的链路和重试配置,示例代码:

import { ApolloClient, InMemoryCache, createHttpLink, ApolloLink } from '@apollo/client';
import { createAuthLink } from 'aws-appsync-auth-link';
import { createSubscriptionHandshakeLink } from 'aws-appsync-subscription-link';
import appSyncConfig from './aws-exports';

// 替换默认链路,不引入 AppSync 内置的重试逻辑
const httpLink = createHttpLink({
  uri: appSyncConfig.aws_appsync_graphqlEndpoint,
});

const link = ApolloLink.from([
  createAuthLink({
    url: appSyncConfig.aws_appsync_graphqlEndpoint,
    region: appSyncConfig.aws_appsync_region,
    auth: {
      type: appSyncConfig.aws_appsync_authenticationType,
      // 按实际认证方式补充配置,比如API Key、Cognito凭证等
      apiKey: appSyncConfig.aws_appsync_apiKey,
    }
  }),
  createSubscriptionHandshakeLink(appSyncConfig, httpLink),
]);

const client = new ApolloClient({
  link,
  cache: new InMemoryCache(),
  disableOffline: true,
  // 全局默认配置,关闭缓存和重试
  defaultOptions: {
    watchQuery: {
      fetchPolicy: 'network-only',
      errorPolicy: 'all',
    },
    query: {
      fetchPolicy: 'network-only',
      errorPolicy: 'all',
    },
    mutate: {
      fetchPolicy: 'no-cache',
      errorPolicy: 'all',
      // 关键配置:重试次数设为0
      retry: {
        attempts: 0
      }
    }
  }
});

方案二:单个 Mutation 单独配置无重试

如果不需要全局修改,只针对特定请求关闭重试,发起请求时添加配置即可:

const [execMutation] = useMutation(你的Mutation语句, {
  retry: {
    attempts: 0
  },
  fetchPolicy: 'no-cache'
})

效果验证

配置完成后,断网环境下执行 Mutation 会立即抛出Error: Network error: Failed to fetch,不会触发任何自动重试,表现和传统 REST API 调用完全一致。

内容的提问来源于stack exchange,提问作者Venky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:54:04