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

#graphql #graphql-js

#graphql #graphql-js

Вопрос:

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

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

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

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

Я совершенно повернулся.

Комментарии:

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

Ответ №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. Вы также можете взглянуть на спецификацию для получения полного объяснения и полных примеров.