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