Используйте Apollo Client или Isomorphic Fetch с GraphiQL - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь интегрировать GraphiQL IDE в свой веб-сайт, и мне интересно, могу ли я получить несколько советов о том, лучше ли мне будет использовать клиент Apollo, который использует остальная часть сайта, или использовать Isomorphic Fetch, как рекомендовано в документации.

Если я использую клиент Apollo, у меня есть только одно соединение, о котором нужно беспокоиться, и мне не нужно думать о том, чтобы проверка подлинности была правильной, а код более сложным.

У меня есть этот код, работающий для функции средства извлечения, но пока он работает только с запросами, и, насколько я понимаю, потребуется немало работы и для работы с мутациями.

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());
    })
}

Примите во внимание, что есть два возможных способа решения этой проблемы, и что это такой же вопрос проектирования, как и технический, но надеюсь, что кто-то может мне помочь.

1 Ответ

0 голосов
/ 11 июля 2019

Первый вариант в порядке, но у вас есть некоторый избыточный синтаксис.Вот что я использую:

params => client.query({ ...params, query: gql(params.query) });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...