Apollo 客户端使用 GET 请求的查询反应钩子

Posted

技术标签:

【中文标题】Apollo 客户端使用 GET 请求的查询反应钩子【英文标题】:Apollo Client useQuery react hook for GET requests 【发布时间】:2021-12-14 18:47:31 【问题描述】:

我试图从中提取的 API 资源需要一个 GET 请求。 如何使用 useQuery 钩子发送 GET 请求,它似乎只发送 POST 请求。

在我对 GraphQL 的有限理解中,是否应该更改服务器以使 GET_ALL_MODELS 的端点是 POST 请求,或者我是否需要更改前端的某些内容以便我的查询发送 GET 方法请求。

【问题讨论】:

【参考方案1】:

有两种方法可以实现。

一个是设置您的ApolloClient 以将所有查询发送为GET。这是使用HttpLink with useGETForQueries as true

实现的
import  ApolloClient, InMemoryCache, HttpLink, ApolloLink  from '@apollo/client';

const client = new ApolloClient(
  cache: new InMemoryCache(),
  link: new HttpLink(
    uri: '/graphql',
    useGETForQueries: true
  ),
);

如果您需要针对特定​​查询执行此操作,您可以 override the ApolloLink context 并将 fetchOptions.method 设置为 GET

const query = useQuery(gql`...`, variables: ..., context: fetchOptions: method: 'GET')

【讨论】:

真的很有帮助,谢谢,我已经浏览了很多次文档,发现自己在 useQuery 挂钩文档中徘徊,

以上是关于Apollo 客户端使用 GET 请求的查询反应钩子的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 5 中使用 GET 方法使用 apollo graphql 查询

@apollo/client 反应钩子 useQuery() 数据未定义

使用 Apollo 和 Vuejs 的反应式查询定义

Apollo 查询在页面刷新时运行,但不使用反应路由器导航?

Apollo 客户端/使用 localhost 反应本机错误

Apollo 客户端 - 从缓存中读取