Используйте клиент Apollo или изоморфную выборку с GraphiQL

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

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

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

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

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
0
479
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Другие вопросы по теме