使用 Apollo Client 或 GraphiQL 的 Isomorphic Fetch



我正在尝试将 GraphiQL IDE 集成到我的网站中,并且想知道我是否可以获得一些建议,说明我是否最好使用网站其余部分使用的 Apollo 客户端或使用文档中建议的 Isomorphic Fetch。

如果我使用 Apollo 客户端,那么我只需要担心一个连接,并且不必考虑确保身份验证正确,但代码更复杂。

我有这段代码用于 fetcher 函数,但到目前为止它仅适用于查询,据我了解,也需要相当多的工作来处理突变。

graphQlFetcher = (params) => {
return this.props.client.query({
query: gql`
${params.query}
`
}).then(function(result) {
return result;
});
}

或者有同构获取方法,但要使其正常工作,我需要首先获取身份验证令牌,并且我对完成这项工作的承诺不够好。不工作代码:

import { Auth } from 'aws-amplify';
getToken = async () => {
const session = await Auth.currentSession();
return session.accessToken.jwtToken;
}
graphQLFetcher = (graphQLParams) => {
return getToken().then(function(token) {
fetch(window.location.origin + '/graphql', {
method: 'post',
headers: { 
'Content-Type': 'application/json',
"Authorization": token
},
body: JSON.stringify(graphQLParams),
}).then(response => response.json());
})
}

欣赏有两种可能的方法可以解决这个问题,并且它既是一个设计问题,也是一个技术问题,但希望有人可以帮助我。

第一个很好,但你有一些多余的语法。这是我使用的:

params => client.query({ ...params, query: gql(params.query) });

最新更新