Использование ключевого слова schema в GraphQL SDL - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь понять значение и использование ключевого слова schema в определении схемы GraphQL (SDL).

Возьмем следующее определение схемы, например:

# Enumeration type for a level of priority
enum Priority {
  LOW
  MEDIUM
  HIGH
}

# Our main todo type
type Todo {
  id: ID!
  name: String!
  description: String
  priority: Priority!
}

type Query {
  # Get one todo item
  todo(id: ID!): Todo
  # Get all todo items
  allTodos: [Todo!]!
}

type Mutation {
  addTodo(name: String!, priority: Priority = LOW): Todo!
  removeTodo(id: ID!): Todo!
}

schema {
  query: Query
  mutation: Mutation
}

Может кто-нибудь объяснить мне, пожалуйста, значение ключевого слова / блока schema в приведенном выше определении, зачем оно нам вообще нужно?

schema {
  query: Query
  mutation: Mutation
}

1 Ответ

1 голос
/ 26 мая 2020

В GraphQL есть три типа операций :

  • запрос - выборка только для чтения.
  • мутация - запись с последующей выборка.
  • подписка - долгоживущий запрос, который извлекает данные в ответ на исходные события.

Чтобы ваша схема поддерживала определенную операцию, она должна связать с ним определенный тип объекта. Каждый тип служит точкой входа root или для остальной части вашей схемы. Это то, что делает этот SDL - он показывает root тип операции , связанный с каждой операцией в схеме. Требуется только тип запроса - два других необязательны и могут быть опущены в определении. Каждый тип операции root должен быть типом объекта - он не может быть скаляром, перечислением и т. Д. c.

Обратите внимание, что по соглашению три типа называются Query, Mutation и Subscription - но их можно было назвать как угодно. Например, у вас может быть такая схема:

schema {
  query: Dog
}

type Dog {
  breeds: [Breed!]!
}

Имя типа по большей части несущественно. Однако, если вы следуете стандартному соглашению (Query, Mutation и Subscription), определение схемы можно вообще опустить. GraphQL просто предполагает, что тип Query является типом запроса root и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...