gpt4 book ai didi

syntax - `schema` GraphQL SDL 中的关键字用法

转载 作者:行者123 更新时间:2023-12-02 19:29:32 26 4
gpt4 key购买 nike

我正在尝试了解 GraphQL 架构定义 (SDL) 上的 schema 关键字的含义和用法。

让我们以以下架构定义为例:

# 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关键字/ block 的含义吗?为什么我们仍然需要它?

schema {
query: Query
mutation: Mutation
}

最佳答案

operations共有三种类型在 GraphQL 中:

  • query – a read‐only fetch.
  • mutation – a write followed by a fetch.
  • subscription – a long‐lived request that fetches data in response to source events.

为了让您的架构支持特定操作,它必须将特定对象类型与其关联。每种类型都充当架构其余部分的入口点。这就是此 SDL 的作用 - 它显示与架构中每个操作关联的根操作类型。仅查询类型是必需的——其他两个是可选的,可以从定义中省略。每个根操作类型必须是对象类型——它不能是标量、枚举等。

请注意,按照惯例,这三种类型被命名为QueryMutationSubscription——但它们可以被命名为任何名称。例如,您可以有这样的架构:

schema {
query: Dog
}

type Dog {
breeds: [Breed!]!
}

类型的名称在大多数情况下是无关紧要的。但是,如果您遵循标准约定(QueryMutationSubscription),则可以完全省略架构定义。 GraphQL 只会假设 Query 类型是查询根类型,依此类推。

关于syntax - `schema` GraphQL SDL 中的关键字用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62017284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com