Eug*_*ene 19 javascript apollo graphql next.js apollo-client
这是我在这里的第一篇讨论帖子。我通过奥德赛学到了Apollo
+ 。目前,我正在使用Next.js构建自己的项目,该项目需要从 2 个GraphQL 端点获取数据。GraphQL
我的问题:如何使用GraphQL 从多个端点ApolloClient
获取数据?
以下是我的第一个端点的代码:
import { ApolloClient, InMemoryCache, createHttpLink } from "@apollo/client";
const client = new ApolloClient({
ssrMode: true,
link: createHttpLink({
uri: "https://api.hashnode.com/",
credentials: "same-origin",
headers: {
Authorization: process.env.HASHNODE_AUTH,
},
}),
cache: new InMemoryCache(),
});
export default client;
Run Code Online (Sandbox Code Playgroud)
小智 18
你想要完成的事情有点反对阿波罗的“一张图”方法。查看网关和联合 - https://www.apollographql.com/docs/federation/
话虽如此,一些黑客解决方案是可能的,但您将需要维护更复杂的结构并在每个查询中指定端点,这会破坏内置机制并可能导致优化问题。
//Declare your endpoints
const endpoint1 = new HttpLink({
uri: 'https://api.hashnode.com/graphql',
...
})
const endpoint2 = new HttpLink({
uri: 'endpoint2/graphql',
...
})
//pass them to apollo-client config
const client = new ApolloClient({
link: ApolloLink.split(
operation => operation.getContext().clientName === 'endpoint2',
endpoint2, //if above
endpoint1
)
...
})
//pass client name in query/mutation
useQuery(QUERY, {variables, context: {clientName: 'endpoint2'}})
Run Code Online (Sandbox Code Playgroud)
这个包似乎可以满足您的需求:https ://github.com/habx/apollo-multi-endpoint-link
另外,请查看此处的讨论:https ://github.com/apollographql/apollo-client/issues/84
归档时间: |
|
查看次数: |
14450 次 |
最近记录: |