Запретить консоль Graphiql выдавать несколько запросов самоанализа

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

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


person stoebelj    schedule 13.05.2019    source источник


Ответы (1)


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

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)

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

person Daniel Rearden    schedule 13.05.2019
comment
Я работаю! Я сделал два незначительных изменения, чтобы заставить его работать. Как только эти изменения будут одобрены, я могу утвердить этот ответ. Большое спасибо! - person stoebelj; 14.05.2019