Nuxt 3:在状态 500 或 429 上使用 useFetch、useAsyncData 和 useLazyFetch 防止重试请求

问题描述 投票:0回答:1

我在 Nuxt 3 应用程序中遇到一个问题,当请求失败且状态代码为 500 或 429 时,请求会自动重试。这种行为是意外的,而且我无法找到防止这种情况的方法。

我还没有尝试任何具体的解决方案,因为尽管进行了深入的研究,我还没有找到解决如何防止在 Nuxt 3 中自动重试状态代码 500 或 429 的请求的文档或资源。我最初的重点是审查官方文档和社区论坛。

如果您对如何解决此问题有任何建议或见解,我们将不胜感激。此外,如果我可能忽略了文档中的任何特定部分,请为我指出正确的方向。

vue.js vuejs3 nuxt.js fetch nuxt3
1个回答
0
投票

经过进一步调查,我发现在 Nuxt 3 中使用 useFetch 函数时,在 fetch 配置中添加 retry: 0 选项可以有效防止自动请求重试。

fetch 配置中的重试选项控制失败请求的重试次数。通过将其设置为 0,我们指示 fetch 机制在失败时不要重试请求,从而避免了可能会自动重试某些 HTTP 状态代码(例如 500 或 429)的请求的默认行为。

以下是如何在代码中实现此解决方案的示例:

async function createQuote(body: QuotePayload) {
   const { data: response, error } = await useFetch<DataMessage<Quote>>(
      `api/quotes`,
      {
         baseURL: store_user.url_old_project,
         body: body,
         headers: store_user.auth_header,
         key: `createQuote ${Date.now()}`,
         method: 'POST',
         retry: 0,
      },
   )

   return { error, response }
}

虽然此解决方案基于每个请求工作,但我目前正在探索是否有一种方法可以在 Nuxt 项目设置或配置选项中全局配置此行为。如果有人对禁用重试的全局配置有见解,请随时分享!!

© www.soinside.com 2019 - 2024. All rights reserved.