在urql的持久化查询中,该方法未变为GET方法

经过

我们使用NestJS(兼容Fastify)开发后端,使用Next.js(App Router)开发前端,并在使用GraphQL的Persisted Queries时,在前端引入了urql。
然而,尽管尝试了官方提供的配置方法,但在发送请求时,Persisted Queries并没有生效。

版本等

"@urql/core": "^4.1.1",
"@urql/exchange-persisted": "^4.1.0",
"@urql/next": "^1.0.0",
"graphql": "^16.7.1",
"next": "13.4.7",
"urql": "^4.0.5"

做过的事情 de

由于GraphQL本身已经被引入,因此为了引入持久化查询,我在设置中添加了persistedExchange。但是,引入持久化查询之前和之后的行为没有发生变化。

createClient({
    url: 'http://localhost:8080/graphql', // 例
    exchanges: [
      cacheExchange,
      fetchExchange,

      // ↓のpersistedExchangeを追記した
      persistedExchange({
        preferGetForPersistedQueries: true
      })
    ]
})

總結

如果在URQL中交换机的顺序描述错误,它将无法正常工作。
这次我将fetchExchange的描述放在persistedExchange之后,成功地启用了持久化查询。
详细信息可以参考这篇文章。

以下是完成形的程式碼。

createClient({
    url: 'http://localhost:8080/graphql', // 例
    exchanges: [
      cacheExchange,

      // ↓のpersistedExchangeを追記した
      persistedExchange({
        preferGetForPersistedQueries: true
      }),
      fetchExchange // fetchExchangeをpersistedExchangeの後に記述
    ]
})
广告
将在 10 秒后关闭
bannerAds