strapi.fetch 使用原生 fetch() API

页面摘要: 在 Strapi 5 中,strapi.fetch 包装的是原生 fetch() API 而非 node-fetch,需要将 timeout 参数替换为 signal: AbortSignal.timeout()。

在 Strapi 5 中,strapi.fetch 对象现在包装的是原生 node Fetch API,而非 node-fetch。

本页面是破坏性变更数据库的一部分,提供有关该破坏性变更的信息,以及从 Strapi v4 迁移到 Strapi 5 的附加说明。

破坏性变更说明

在 Strapi v4 中

Strapi.fetch 包装的是 node-fetch 的 fetch(),并接受相同的参数。

在 Strapi 5 中

不再使用 node-fetch 模块。strapi.fetch 调用原生的 fetch() 方法。

迁移

说明

  • 参数大体兼容,但存在一些差异。

手动操作步骤

如果你在 Strapi v4 的代码中向 strapi.fetch 传入了 timeout 参数,请用 signal 属性替换,如下所示:

在 Strapi v4 中

strapi.fetch(url, {
  method: 'POST',
  body,
  headers,
  timeout: 1000,
}); // 接受 node-fetch 的 RequestInit 类型

在 Strapi 5 中

strapi.fetch(url, {
  method: 'POST',
  body,
  headers,
  signal: AbortSignal.timeout(1000)
}); // 接受 Node 原生的 RequestInit 类型