让我们使用AWS AppSync和React创建一个ToDo应用程序(1)定义GraphQL模式
首先
在AWS AppSync中,为了在API查询中使用GraphQL,需要定义GraphQL的模式。
这次我们将创建一个名为schema.graphql的文件,并在这里定义GraphQL模式。
Todoスキーマ的定义
查询
首先,我们定义了Todo的类型。
每个项目都有一个指定的ID、String和Int类型,这是GraphQL默认提供的类型。
此外,!表示该项是必需的。
type Todo {
id: ID!
title: String
description: String
completed: Boolean
}
接下来,我们将为这种类型定义一个查询。添加名为Query的根类型,并在其中添加一个getTodos字段,该字段将返回包含Todo对象的列表。
type Query {
getTodos: [Todo]
}
我将在架构中注册。
schema {
query:Query
}
这些结果到此为止。
schema {
query:Query
}
type Query {
getTodos: [Todo]
}
type Todo {
id: ID!
title: String
description: String
completed: Boolean
}
突变
由于对查询数据进行了查询类型的定义,因此我们将继续定义用于在变更中添加、更新和删除数据的查询类型。
首先,我们会定义在进行添加和更新操作时的mutation。
addTodo字段接受参数,类似于一个方法,返回一个Todo对象作为结果。
type Mutation {
addTodo(id: ID!, title: String, description: String, , completed: Boolean): Todo
}
我们还定义了在编辑和删除时发生的变化。
type Mutation {
addTodo(id: ID!, title: String, description: String, , completed: Boolean): Todo
updateTodo(id: ID!, title: String, description: String, , completed: Boolean): Todo
deleteTodo(id: ID!): Todo
}
而且,尽管这次没有使用,但似乎也可以使用枚举类型等。
到目前为止的结果 de
schema {
query: Query
mutation: Mutation
}
type Query {
getTodos: [Todo]
}
type Mutation {
addTodo(id: ID!, title: String, description: String, , completed: Boolean): Todo
updateTodo(id: ID!, title: String, description: String, , completed: Boolean): Todo
deleteTodo(id: ID!): Todo
}
type Todo {
id: ID!
title: String
description: String
completed: Boolean
}
订阅
由于本次示例中不需要实时性,因此不使用订阅服务。如果有机会的话,我会尝试一下。
注册GraphQL模式
将在前面的步骤中创建的GraphQL模式上传到AppSync。
首先,从控制台界面中选择“AWS AppSync > 创建的项目 > 架构”,打开架构编辑界面。
请将创建的GraphQL模式的内容复制粘贴到Schema字段中,然后点击右下方的“保存”按钮保存。点击按钮后,系统将验证内容,并在模式中存在语法错误时显示错误消息。
如果出现错误,请修复相关部分并重新保存。成功保存后,schema.graphql 中定义的类型列表将显示在“Data Types”部分。
以下是GraphQL模式的定义以及向AppSync注册的步骤。
请参考
设计您的模式 – AWS AppSync
GraphQL简介 – GraphQL