我在 Nuxt 3 应用程序中遇到一个问题,当请求失败且状态代码为 500 或 429 时,请求会自动重试。这种行为是意外的,而且我无法找到防止这种情况的方法。
我还没有尝试任何具体的解决方案,因为尽管进行了深入的研究,我还没有找到解决如何防止在 Nuxt 3 中自动重试状态代码 500 或 429 的请求的文档或资源。我最初的重点是审查官方文档和社区论坛。
如果您对如何解决此问题有任何建议或见解,我们将不胜感激。此外,如果我可能忽略了文档中的任何特定部分,请为我指出正确的方向。
经过进一步调查,我发现在 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 项目设置或配置选项中全局配置此行为。如果有人对禁用重试的全局配置有见解,请随时分享!!