Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphql 将Apollo客户端或同构获取与GraphiQL一起使用_Graphql_Apollo Client_Graphiql - Fatal编程技术网

Graphql 将Apollo客户端或同构获取与GraphiQL一起使用

Graphql 将Apollo客户端或同构获取与GraphiQL一起使用,graphql,apollo-client,graphiql,Graphql,Apollo Client,Graphiql,我正在尝试将GraphiQL IDE集成到我的网站中,我想知道我是否可以得到一些建议,关于我是否最好使用网站其余部分使用的Apollo客户端,或者按照文档中的建议使用同构Fetch 如果我使用Apollo客户端,那么我只需要担心一个连接,不必考虑确保身份验证是正确的,但代码更复杂 我有这段代码用于fetcher函数,但到目前为止,它只适用于查询,据我所知,处理突变也需要相当多的工作 graphQlFetcher = (params) => { return this.props.c

我正在尝试将GraphiQL IDE集成到我的网站中,我想知道我是否可以得到一些建议,关于我是否最好使用网站其余部分使用的Apollo客户端,或者按照文档中的建议使用同构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) });