Запретить консоли Graphiql выдавать несколько запросов на самоанализ - PullRequest
3 голосов
/ 13 мая 2019

Я использую компонент Graphiql для рендеринга консоли и хочу получить схему с помощью запроса самоанализа. Проблема заключается в том, что если компонент повторно визуализируется до того, как первый запрос самоанализа будет разрешен (скажем, например, открыт модальный режим), второй запрос самоанализа будет запущен. Учитывая, что эти запросы дороги для бэкэнда, я бы хотел этого избежать.

Есть ли способ избежать множественных запросов самоанализа?

1 Ответ

1 голос
/ 13 мая 2019

Компонент GraphiQL принимает schema prop:

schema: экземпляр GraphQLSchema или null, если он не используется. Если указано undefined, GraphiQL отправит запрос на самоанализ с использованием средства извлечения для создания схемы.

Вы можете использовать getIntrospectionQuery, чтобы получить полную схему самоанализа, получить результат самоанализа и затем использовать его для построения схемы.

const { getIntrospectionQuery, buildClientSchema } = require('graphql')

const response = await fetch('ENDPOINT_URL', {
  method: 'post',
  headers: { 'Content-Type': 'application/json' },
  body: { query: JSON.stringify(getIntrospectionQuery()) },
})
const introspectionResult = await response.json()
const schema = buildClientSchema(introspectionResult.data)

Сделайте это перед тем, как визуализировать компонент, а затем просто передайте схему в качестве реквизита. Если ваша схема не изменится, вы также можете просто сохранить результат самоанализа в файл и использовать его вместо запроса к серверу.

...