`schema`关键字在GraphQL SDL中的用法

问题描述 投票:0回答:1

我想了解一下 "我 "的意思和用法。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
}
syntax graphql
1个回答
1
投票

有三种类型 业务 在GraphQL中。

  • query -- 只读的获取
  • mutation - 写入后的取数。
  • 订阅--一个长期的请求,响应源事件获取数据。

为了让您的模式支持特定的操作,它必须与特定的对象类型相关联。每个类型都作为 切入点 到您的模式的其余部分。这就是这个SDL的作用--它显示了 根作业类型 与模式中的每个操作相关联。只有查询类型是必须的--其他两个是可选的,可以从定义中省略。每个根操作类型必须是一个对象类型--不能是标量、枚举等。

请注意,按照惯例,这三种类型被命名为 Query, MutationSubscription -- 但它们可以被命名为任何东西。例如,你可以有一个这样的模式。

schema {
  query: Dog
}

type Dog {
  breeds: [Breed!]!
}

大多数情况下,类型的名称是不重要的。然而,如果您遵循标准的约定 (Query, MutationSubscription),模式定义可以完全省略。GraphQL将仅仅假设 Query type为查询根类型,以此类推。

© www.soinside.com 2019 - 2024. All rights reserved.