Я пытаюсь интегрировать 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());
})
}
Примите во внимание, что есть два возможных способа решения этой проблемы, и что это такой же вопрос проектирования, как и технический, но надеюсь, что кто-то может мне помочь.