Что такое параметр requestString при вызове метода graphql в graphql.js? - PullRequest
0 голосов
/ 15 апреля 2019

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

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

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

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

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

1 Ответ

2 голосов
/ 15 апреля 2019

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

...