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 查询在页面刷新时运行,但不使用反应路由器导航?