我想了解一下 "我 "的意思和用法。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
}
有三种类型 业务 在GraphQL中。
- query -- 只读的获取
- mutation - 写入后的取数。
- 订阅--一个长期的请求,响应源事件获取数据。
为了让您的模式支持特定的操作,它必须与特定的对象类型相关联。每个类型都作为 根 或 切入点 到您的模式的其余部分。这就是这个SDL的作用--它显示了 根作业类型 与模式中的每个操作相关联。只有查询类型是必须的--其他两个是可选的,可以从定义中省略。每个根操作类型必须是一个对象类型--不能是标量、枚举等。
请注意,按照惯例,这三种类型被命名为 Query
, Mutation
和 Subscription
-- 但它们可以被命名为任何东西。例如,你可以有一个这样的模式。
schema {
query: Dog
}
type Dog {
breeds: [Breed!]!
}
大多数情况下,类型的名称是不重要的。然而,如果您遵循标准的约定 (Query
, Mutation
和 Subscription
),模式定义可以完全省略。GraphQL将仅仅假设 Query
type为查询根类型,以此类推。