Что такое параметр requestString при вызове метода graphql в graphql.js?

Я работаю над «Начало работы с GraphQL.js» graphql.org. В учебнике метод graphql вызывается так:

graphql(schema, '{ hello }', root).then((response) => {
  console.info(response);
});

Моя путаница со вторым параметром - '{ hello }'. Я действительно не знаю, на что я даже смотрю. Использует ли это сокращение значения свойства объекта Javascript, так что это действительно означает '{ hello: hello }'? Если да, то относится ли значение hello в этом объекте к функции распознавателя «привет»? А если дело в это, то для чего используется ключ в этом объекте?

Или это имеет какое-то значение в синтаксисе GraphQL, о котором я не знаю?

Я совсем обернулся.

Я думаю, что у GraphQL есть собственный синтаксис, проверьте пример запроса здесь: https://graphql.org/learn/

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

Ответы 1

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

официальный учебник для GraphQL.js показывает схемы, созданные с использованием языка определения схем (SDL). Хотя SDL специфичен для GraphQL, на самом деле это нет GraphQL. Фактическая часть «языка запросов» GraphQL имеет отдельный, хорошо документированный синтаксис — именно этот синтаксис используется для написания запросов, которые отправляются от клиента на сервер GraphQL. SDL, с другой стороны, используется для создания схемы, которая определяет возможности конкретной службы GraphQL.

Эти два синтаксиса имеют некоторое сходство (например, они оба используют фигурные скобки), но не являются взаимозаменяемыми.

Если мы определим схему GraphQL с помощью SDL следующим образом:

type Query {
  hello: String
  goodbye: String
}

Мы говорим, что у нашего корневого типа операции запроса есть два поля, которые могут запрашивать клиенты — hello и goodbye. Как клиент, мы можем запросить одно или оба поля, используя синтаксис GraphQL:

query {
  hello
}

или...

query {
  hello
  goodbye
}

Любые лишние пробелы между токенами игнорируются, поэтому второй запрос эквивалентен следующему:

query { hello goodbye }

Кроме того, если мы используем операцию query, а не mutation или subscription, мы можем вообще отказаться от ключевого слова query, и GraphQL будет считать, что это запрос. Это известно как стенограмма запроса:

{
  hello
  goodbye
}

официальный учебник довольно хорошо объясняет, как создавать запросы GraphQL. Вы также можете взглянуть на спецификация для полного объяснения и полных примеров.

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